gpt4 book ai didi

c - 数组的行为

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:53 25 4
gpt4 key购买 nike

我有一个代码如下:

typedef struct Details {
char a[32];
char b[32];
char c[32];
} Details_t;

char *xyz(Details_t *pdetails) {
if ((NULL == pdetails->a) && (NULL == pdetails->b)) {
return NULL;
}
int len = 0;
char *newString = NULL;
len = strlen(a) + strlen(b);
newString = (char *)calloc(1, len + 3);
strcpy(newString, a);
strcat(newString, ";");
strcat(newString, b);
strcat(newString, ";");

return newString;
}

现在我从 main() 传递这个结构的地址。

main() {
char *ret = NULL;
Details_t var;
memset((void *)&var, '\0', sizeof(Details_t));
strcpy(var.b, "EXAMPLE");
ret = xyz(&var);
printf("OUTPUT==%s\n", ret);
}

我的问题是:我没有复制成员 a 中的任何值并且我有 memset() 结构详细信息 NULL 所以所有未复制的成员都应该是无效的。但是在 xyz 函数中,下面的条件失败了。

if ((NULL == pdetails->a) && (NULL == pdetails->b))

我得到的输出如下:

输出==;示例;

为什么这个条件失败了?

最佳答案

当执行此 Details_t var; 时,var.a 和 var.b 拥有自己的地址。所以 var.a == NULL 将返回 false。

关于c - 数组的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17423371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com