【发布时间】:2021-02-27 01:44:03
【问题描述】:
我想在 C 中创建一个结构,并且我希望它只有一个组件作为它的地址。
换句话说,我只是创建了一个单组件自引用结构:
#include <stdio.h>
#include <string.h>
struct Books {
struct Books *ptr; //* the only one component of this structure*//
};
int main( ) {
struct Books book1;
printf("%p\n", book1.ptr);
return 0;
}
这个脚本的输出是 - nil。
我的问题是 - 为什么?该脚本在计算机内存中创建了一个物理条目,其中记录了一个组件 structbook1。
现在我想查看这个结构的地址(或者换句话说,我想查看这个单组件结构的内容)。
一旦它物理存在,为什么它给我的输出为零?
【问题讨论】:
-
nil 是未定义的行为,恰好 book1 的内存为 nil。要获得您期望的行为,您必须这样做
book1.ptr=&book1 -
你从未初始化过
book1.ptr,因此它的内容是不确定的。 -
struct Books book1; book1.ptr = &book1;
标签: c pointers self-reference construct