【发布时间】:2018-01-21 09:30:42
【问题描述】:
当我遇到无法解决的问题时,我只是在玩 C。
我有一个结构,可以说
typedef struct Node
{
void * data;
int id;
}Node;
我的程序看起来像
void Node_Init(Node *node)
{
node = malloc(sizeof(Node));
node->id = 5;
}
int main()
{
Node *node;
Node_Init(node);
printf("ID %d", node->id);
}
当我运行此代码并打印 node->id 时,我得到一个随机数?这就像 node->id 被分配在堆栈上而不是堆上?
因为当我做 Node *node;如果我这样做 Node *node = malloc(sizeof(Node)); 它可以工作,但如果我没记错的话,它不需要那样做。谁能帮我说说为什么会这样?
【问题讨论】: