我定义了一个结构数据类型:
typedef struct LinkNode LinkNode;
struct LinkNode {
char *name;
LinkNode *next;
};
并在 main() 中调用它:
Example1:
int main()
{
LinkNode *pnode = (LinkNode *) malloc(sizeof(LinkNode));
scanf("%s", pnode->name);
...
free(pnode);
return 0;
}
它不起作用,除非添加一行:Example 2
int main()
{
LinkNode *pnode = (LinkNode *) malloc(sizeof(LinkNode));
pnode->name = (char *) malloc(sizeof(char));
scanf("%s", pnode->name);
...
free(pnode);
return 0;
}
但以下代码有效:Example 3
int main()
{
LinkNode *pnode = (LinkNode *) malloc(sizeof(LinkNode));
pnode->name = "Jim";
...
free(pnode);
return 0;
}
所以有什么问题?我已将内存分配给 pnode,为什么 scanf() 不起作用?我正在使用VS2010。谢谢!