为什么 C 输出中的自引用结构为空
Why self-referential struct in C output is nill
我想在 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;
}
此脚本的输出为 - 零。
我的问题是 - 为什么?该脚本在计算机内存物理条目中创建了记录一个组件 struct-book1 的条目。
现在我想查看这个结构的地址(或者换句话说我想查看这个单组件结构的内容)。
一旦它实际存在,为什么它给我输出 nill?
如果您希望结构成员(或任何对象)具有特定值,则必须对其进行初始化或分配以具有该值。仅仅因为成员的类型是“指向 struct Books
的指针”并不意味着它指向它所在的 struct Books
或者它具有任何其他特定值。
使用struct Books book1 = { &book1 };
.
此外,printf
的 %p
转换应该给出一个 void *
参数,因此转换您传递的地址:printf("%p\n", (void *) book1.ptr);
.
试试这个:printf("%p\n", &book1);
打印结构的地址。
您正试图打印出一个未初始化的值,并且程序具有未定义的行为。
使用 & 打印地址
我想在 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;
}
此脚本的输出为 - 零。
我的问题是 - 为什么?该脚本在计算机内存物理条目中创建了记录一个组件 struct-book1 的条目。
现在我想查看这个结构的地址(或者换句话说我想查看这个单组件结构的内容)。
一旦它实际存在,为什么它给我输出 nill?
如果您希望结构成员(或任何对象)具有特定值,则必须对其进行初始化或分配以具有该值。仅仅因为成员的类型是“指向 struct Books
的指针”并不意味着它指向它所在的 struct Books
或者它具有任何其他特定值。
使用struct Books book1 = { &book1 };
.
此外,printf
的 %p
转换应该给出一个 void *
参数,因此转换您传递的地址:printf("%p\n", (void *) book1.ptr);
.
试试这个:printf("%p\n", &book1);
打印结构的地址。
您正试图打印出一个未初始化的值,并且程序具有未定义的行为。
使用 & 打印地址