关于值传递指针传递和引用传递

本文通过实例详细解析了C语言中的指针概念,包括指针的定义、使用及与引用的区别,适合初学者理解指针的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考博客:http://blog.youkuaiyun.com/shiyuqing1207/article/details/45937447

因为这段时间做的一个电视机遥控器的APP项目是和底层一起开发,我负责的是android上层部分,而主要的连接和发送是公司的c的妹子写的,上下层对接使用的是JNA,期间可以说是问题不断,主要就是因为数据传递过程中,底层用指针操作的时候的一些问题,逼不得已,这周末,作为一个大一学过c之后就再也没碰过的人,我对突然产生了浓烈的兴趣,就研究了一下,主要就是看到上面的那篇博客,可以说写的是非常好,然后我自己也总结了下自己的理解,有不对的地方希望大家可以一起讨论,增进对指针的理解。


int a = 2;
int* p = &a;
int &q = a;
这里呢,其实 &q = &a = *p;
q其实就是a,而 p其实是a的地址;所以对q的操作就是在内存中就是对a的操作,而对p的操作其实是对a的地址的操作(这里表达错误,对p的操作其实是对p的内容的操作,也就是那个地址的操作,对a的本身的地址没有任何影响),所以才说其实类似于fun(int* p); fun(&a);这种操作其实也是值的传递,这个值是a的地址,也就是p中存的是a的地址。
个人理解,*其实是一种运算符,根据地址去求值的运算符,而int* p = &a;
实质上是是将a的地址赋给了p;然后根据*p就可以去求出这个地址所对应的值,所以这个p本身的内容就是a的地址,而p也拥有自己的地址,所以对*p自加也就是相应的a的值也会自加,而对p自加其实是将p自己的内容自加了,也就是将存储的地址加1了,*p所求出来的就是另一个地址的值,并不会改变a的值。

个人理解2:其实每一个变量所对应的都是有自己的地址和值也就是reference和value,而像a啊这些什么的知识我们程序员给这个东西取的名字,再说一下&,这其实是一个求址运算符,求出该变量对应的地址

具体的大家可以参考我上面参考的那篇博客,里面的图和实例真的非常好,太解惑了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值