【发布时间】:2020-12-12 10:02:33
【问题描述】:
我不明白为什么当我调用这样的函数时:
typedef struct str_node{
int data;
struct str_node *next;
}node;
void begin(node *num);
int main(){
node a;
begin(&a);
我必须作为参数传递&a,我不能简单地传递a。确实当我遇到这种情况时:
void begin(node *head);
int main(){
node *a;
begin(a);
我必须通过a 而不是&a。但是当我遇到这种情况时:
void begin(node **head);
int main(){
node *a;
begin(&a);
我必须再次通过&a 而不是a。还有,为什么我在处理链表头的时候总是要用node *a而不是node a?
【问题讨论】:
-
你需要学习指针。我们无法取代一本好的 C 书。阅读它,做所有的练习,你最终会明白其中的区别。
-
我其实是自己写的问题就明白了,我真正不明白的只是最后一个例子,但是通过写问题我明白了。
-
在第一个上,我确切地知道我只是感到困惑的区别。区别只是通过值或引用传递。无论如何,我没有兴趣说服你。美好的一天。
标签: c pointers linked-list