#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
struct node
{
int id;
struct node *next;
};
typedef struct node NODE;
int main()
{
NODE *hello;
hello=(NODE *) malloc(sizeof(NODE));
hello->id=5;
printf("\nAfter malloc\n");
printf("address of hello: %d ",hello);
printf("\n");
printf("Value of Id is: %d , Value of next is: %u\n",hello->id,hello->next);
return 0;
}
我尝试执行上面的代码,得到了以下输出。
输出:
在Malloc之后
你好地址:16949264
Id的值为:5,next的值为:0
我的问题是,为什么hello的值没有分配给next?
答案 0 :(得分:0)
为什么hello的值没有分配给next?
为什么会这样?您已将内存分配给hello
,因此它具有值。 next
尚未分配内存,因此它不会显示任何值。 (说实话,这是不确定的)。
此外,要打印地址,您应该将%p
格式说明符与printf()
一起使用,并将相应的参数转换为(void *)
。
另外,Please see this discussion on why not to cast the return value of malloc()
and family in C
.。
答案 1 :(得分:0)
hello->next
不是hello
,因此value
的{{1}}未分配给hello
。
hello->next
也不是hello->next
,因此hello->value
未分配给hello->value
。