gpt4 book ai didi

c - 为什么 & 运算符为结构类型赋予不同的值

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

考虑以下测试程序 ( codepad execution ):

#include <stdio.h>
#include <string.h>


struct camp {
char b[8];
};


int main()
{
struct camp c;
strcpy(c.b, "Hello");
c.b[5] = '\0';
printf("c size: %d\nAddress (amp): %d :: %d\n", sizeof(c), &c, c);
printf("Address of b: %d :: %d\n", &(c.b), c.b);

return 0;
}

示例输出:

c size: 8
Address (amp): -1082463628 :: 1819043144
Address of b: -1082463628 :: -1082463628

虽然 &(c.b)c.b(第二次调用 printf)给出的地址相同,但 struct camp c 也一样(第一次调用 printf)返回不同的地址。此外,&c&(c.b)c.b 相同。

到底发生了什么?

最佳答案

printf 在第一种情况下试图做的是将 c 解释为整数。 c 不是整数,甚至是可以转换为整数的值(显式或隐式),因此写入的值可以是调用未定义行为时的任何值.

关于c - 为什么 & 运算符为结构类型赋予不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13796485/

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