【发布时间】:2018-12-12 08:57:03
【问题描述】:
struct issue {
const char *issue_c2;
};
int main {
struct issue obj1;
printf("obj1 of issue1 %p\n", &obj1);
printf("obj1 of issue2 %p\n", obj1);
printf("obj1 of issue3 %p\n", obj1.issue_c2);
printf("obj1 of issue4 %p\n", &obj1.issue_c2);
}
在上面的代码中,我尝试打印obj1的地址。最初我认为obj1 和&obj1 打印相同的地址。但是打印出来后地址就不一样了。
obj1 of issue1 0x7ffdb24c5b08
obj1 of issue2 0x7ffdb24c5a00
obj1 of issue3 0x7ffdb24c5b00
obj1 of issue4 0x7ffdb24c5a10
【问题讨论】:
-
To code 是废话,所以它打印废话。你还期待什么?您不能使用
%p打印对象。打印未初始化指针的内容也不会打印任何有意义的内容。 -
问题是什么?
-
这段代码甚至不能编译,如果它编译,它不应该在现实场景中给出那个输出。请提供minimal reproducible example。
-
这段代码将被编译。只需要 obj1.issue_c2 和 &obj1.issue_c2 之间的区别。