对于C语言指针的理解和原理分析 C语言指针理解

纯小白初学的理解 , 博一笑而已
指针首先写一段使用指针的程序
【对于C语言指针的理解和原理分析 C语言指针理解】 int main(){int a=10;//定义一个变量 , 申请4个字节内存int* p=&a;//取地址 , 把地址放到p的申请的内存里 , 这里的*说明p就是指针变量*p=20;//* --解引用操作符 , 根据p中的地址找到a , 并对a进行操作printf("a=%dn",a);return 0;//打印结果为20}
可以画出流程图 :

对于C语言指针的理解和原理分析 C语言指针理解

文章插图
??个人的理解
对照程序指针的执行流程可以理解为:
房东找了一个房间出租 , 房间起了个名叫做a雅居 , 住进来个人叫10君 , 房东看了看a雅居的门牌号(这个过程就是&a) , 假设地址为0x0012ff40记在本子p上 , 本子的规格为int*;某一天房东看10君不顺眼 , 想让20君住进去 , 房东根据本子p上的地址(即0x0012ff40)找到了10君(这个过程就是*p) , 把他赶了出去 , 让20君住进去;现在去a雅居找到的人就是20君
(小小白的奇妙比喻)
原理分析指针变量:一种用来存放地址的指针变量 , 类型为int*(这里的*只是个形式 , 说明变量是指针变量)
解引用:根据指针变量存放的地址找到该地址的变量;*变量名 , (这里的*是操作符)
int a=10;解释:申请一块内存命名为a , 这块内存放的值为10,这块内存的地址为0x0012ff40
int*p=&a;解释:申请一块内存命名p , 把a的地址放到这块内存中;这块内存p也有地址 , 但此时不考虑(&a就是获取a的地址)
*p=20;解释:*p(即解引用)根据p内存储的地址找到a , 此时*p就相当于a , 对*p的操作相当于对a进行操作;所以把20赋给*p就是把20赋给a


初次学习此处的内容 , 有感而发 , 希望有大佬指点