记今天的兴奋之情,当初学C的时候指针学的很鸡肋,导致现在数据结构在梦游,今天终于搞懂指针和单链表了,记录一下,督促自己自学数据结构,哎两行泪。
一直卡的问题
typedef struct node
{
int data;
struct node *next;
}Node,*LinkList;
一直卡住typedef,没清晰搞懂什么意思。
Node=struct node
LinkList=struct node *
结构体指针调用的两种方式
LinkList p;
(*p).data
p->data
没注意看也是疑惑好久
还有就是引用和指针的关系
void add(int *x)
{
(*x)=(*x)+5;//x=10
}
void add(int &n)
{
n=n+5;
}
int main()
{
int x=5,n=5;
add(&x);//x=10
add(n);//n=10
return 0;
}
自认为 n=*x;
引用指向的是同一个地址,而指针存储的是指向变量的地址;*x调用指针存储地址的值。
数据结构那本书的引用直接调用直接就是 L->data;
本身应该是(*L)->data
----------------------------
函数的指针问题:https://baijiahao.baidu.com/s?id=1616897994801163285&wfr=spider&for=pc
今天对指针传递和引用新的困惑。查看资料后有了新的理解。
指针传递时系统会创建一个副本,只是将值传递
如fun( int *p);
int *a;
fun(a);
p和a的地址不一样,只是指针所存的地址一样,指向同一块内存区域,可认为是一个副本。
即&a!=&p;
但是*&a=*&p;
具体参考资料看
https://blog.youkuaiyun.com/wang386476890/article/details/82907259
而引用是对主函数参数的直接使用
如fun(int &p)
int a;
fun(a);
&p=&a;