概述
请看以下例子:
我的分析:
-
*p 是指针指向的值,&*p 是指针指向的值的地址,也就是 指针指向的当前 地址,可以理解。
-
&p是指针自己的地址, * &p就是指版针变量本身了。 那指针自己的地址的值是多少呢?
正确理解:
第一种理解:
-
* 用于语句里的指针变量时,表示指针指向的值。例如:printf("%d", *pa);
-
&用于语句里的普通变量时,表示求普通变量的地址。例如:int a; pa=&a;
-
&*pa==*&pa --用于指针变量 这里 &*pa 和 *&pa 都等于 pa, 也就是 pa指向的变量的地址,这里正好都等于变量 a 的地址
第二种理解:
-
假如pa是一个变量,*pa是以pa为地址的内存所存储的值,&(*pa)就是那个值所在的内存对应的地址, 还是pa
-
&pa就是pa变量的值所在的内存的地址(pa的地址),*(&pa)就是pa的地址对应的内存所存储的值,也是pa
总结:
针对指针变量 &* 和 *& 都是互为逆运算,等同于 * 和 & 抵消
其他的数据类型说抵消不准确:
比如:int a[10]; printf("%d", &*a)
,此时& *就不能抵消了,虽然输出的值是相等的,但是类型不同;
大佬语录: 学C只看值不看类型等于裸奔
最后
以上就是老迟到书包为你收集整理的C语言:指针中 * 与 & 同时使用引发的思考的全部内容,希望文章能够帮你解决C语言:指针中 * 与 & 同时使用引发的思考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复