【发布时间】:2015-03-01 19:54:26
【问题描述】:
基本上,我想知道这是为什么(将列表的内存地址作为参数传递):
void init_lista (elemPtr *list) {
*list = NULL;
}
int main(){
elemPtr list;
init_list(&list);
//[...]
}
与此不同(仅传递列表的内容):
void init_lista (elemPtr list) {
list = NULL;
}
int main(){
elemPtr list;
init_list(list);
//[...]
}
OBS: elemPtr 是结构体的指针类型(typedef struct elem *elemPtr)。
我从&和*了解到的是,第一个将获得var的内存地址,而后者将获得它引用的值。通过这个概念,两个代码部分应该是等效的,但第一个运行良好,而第二个编译但给我一个运行时错误。这是为什么呢?
【问题讨论】:
-
什么是elemPtr?它是某种指针的typedef吗?
-
任何足够好的 C 编程书都能解释这一点。
-
解释它取决于你的先验知识,可能需要几页。
-
您看到的运行时错误是因为第二个代码示例没有更改
main()中list的值。
标签: c pointers parameters reference linked-list