这是本人对应指针的理解(如果有错误请指出)

对于学习c语言,最令人头疼的就是指针
首先这个名字就很让人不解,但是对于抽象问题我们就要试着具体化的解释出来

指针的理解:

假设你在邮局里面放了货物,邮局给你一张条子,这张条子记录着你存放货物的地址,你可以通过这张条子去提取你的货物,这张条子就是指针
问题1:邮局为什么不直接给你货物 (效率问题,直接给你货物,相当于你把值当成参数进行传递,那么计算机就需要new一个很大对象,给计算机很大的压力)
问题2:假如我拿着这个地址去提货发现货物已经被提走了(内存泄漏)
问题3:假如给的这个地址让我不小心丢失了,那么货物就会一直存在哪里,占用内存
问题4:假如邮局给错了地址,你拿着这个地址胡乱提
问题一例子:
img.png
#include <stdio.h>
// 指针变量作为函数参数
void swap(int *,int );
int main()
{
int x,y;
// 支持输入两个参数
scanf(“%d %d”,&x,&y);
printf(“x=%d y=%d\n”,x,y);
// 调用swap函数
swap(&x,&y);
// 打印x,y的值
printf(“x=%d y=%d\n”,x,y);
/
code */
return 0;
}
// 定义函数
void swap(int *pa, int *pb){
// 定义中间变量,用于存储交换值
int t;
printf(“*pa=%d *pb=%d\n”,*pa,*pb);
printf(“pa=%d pb=%d\n”,pa,pb);
t=*pa;
*pa=*pb;
*pb=t;
printf(“*pa=%d *pb=%d\n”,*pa,*pb);
printf(“pa=%d pb=%d\n”,pa,pb);
}
这个时候传递的就是内存地址,而你拿着地址去去提货而已,未完待续?