- 论坛徽章:
- 0
|
你那本书中Linkcity应该是类似于这样的定义吧:typedef struct linkcity * Linkcity;
直接用代码说
struct linkcity{...};
typedef struct linkcity * Linkcity;
void Initcity(Linkcity L)
{
L = malloc(sizeof(struct linkcity));
L -> next = NULL;
}
int main(void)
{
Linkcity head = NULL;
Initcity(head);
return 0;
}
首先请搞清楚函数的栈帧的概念. 显然这个程序得不到链表的头指针,因为在main()函数中,head的值一直就是NULL. 在Initcity()中,L保存所分配的内存空间的首地址,但是参数L是被看做局部变量使用的,
Initcity()执行结束,L的生命也就结束了.在main()中我们仍然没有获得链表的头指针.
如果要用一级指针可以这么写:
Linkcity Initcity(Linkcity L)
{
L = malloc(sizeof(struct linkcity));
L -> next = NULL;
return L;
}
int main(void)
{
Linkcity head = NULL;
head = Initcity(head);
return 0;
}
[ 本帖最后由 lynxbing 于 2009-5-29 10:35 编辑 ] |
|