关于指针

C语言 码拜 3年前 (2017-04-18) 316次浏览
# include<stdio.h>
# include<malloc.h>
typedef struct node
{
int data;
struct node *next;
}*Linklist;
void intial(Linklist &L)
{
L=(Linklist)malloc(sizeof(node));
L->data=1;
L->next=NULL;
}
int main()
{
Linklist L;
intial(L);
printf(“%d”,L->data);
return 0;
}
这个L明明已经是指针类型 为什么还要加个 &    很迷惑! Linklist L中L是一个指针变量,那Linklist&L中的L是啥,按照C语言的理解应该是这个指针变量的地址  假如是不加& 那就无法起到修改链表变量的值 加上一个& 就可以修改了 不懂!
解决方案

20

void intial(Linklist &L)       是传入指针的引用,也就是按引用传递,不过这个语法不是C的,是C++的
C语言里可以写成void intial(Linklist *L),然后传入指针的地址,函数中能过*L访问指针

10

void intial(Linklist &L)       是传入指针的引用,也就是按引用传递,不过这个语法不是C的,是C++的
假如void intial(Linklist L)假如这样传递只能改变指针的内容
而void intial(Linklist &L) 这样传递不仅可以改变内容,还可以改变指针的指向
假如不用引用,那只能使用二级指针了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于指针
喜欢 (0)
[1034331897@qq.com]
分享 (0)