为什么节点的地址没有分配给结构的自引用指针?

时间:2015-09-25 07:24:29

标签: c malloc dynamic-memory-allocation

#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?

2 个答案:

答案 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