0
我对C语言较新。让我们开始使用下面的测试代码。C语言如何初始化结构指针
struct node {
int data;
struct node *next;
};
int main() {
struct node *n;
struct node *n2;
struct node *n3;
struct node *n4;
struct node *n5;
printf("%p\n", n);
printf("%p\n", n2);
printf("%p\n", n3);
printf("%p\n", n4);
printf("%p\n", n5);
return 0;
}
下面的输出显示,
0x7fff57c42888
0x0
0x0
0x0
0x0
我无法理解该变量n的指针地址不为空。而且,具有相同*节点类型的其他变量是0X0。 谁能解释它的原因?谢谢。
的代码调用**未定义行为**。 –
函数的局部变量**不是**在'c'中被初始化。你必须自己做适当的初始化。顺便说一句 - 在打印一个指针值时,你应该转换为'(void *)',就像'printf(“%p \ n”,(void *)n5);' – 4386427
@nm:不会尝试使用任何指针为了访问内存。为什么未定义的行为? –