怎样理解 C指针 *与&互为逆运算?

怎样理解 C指针 *与&互为逆运算?最好举例说明,大理论不太好理解,谢谢!

int a = 3;
int b;
int * p = NULL;
p = &a;
b = *p;
首先要了解一个东西,指针里面存放的是地址。
假设我们上面申明了一个变量a,a的初始值为3,int* p的 int* 是申明一个指向整型的指针P。申明的时候指针指向不知道,所以指向空。然后让指针P指向a,也就是将a的地址存放到P里面。也就是p = &a; 然后我们要怎么获取指针所指向的地址里面的值,也就是&a里面的值呢。就是用到指针的运算符*p。这个运算符就是将指针所存放的地址里面所存放的值获取到。这个地方有点绕,需要自己多理解一下。,像上面所写的一样。*p就将p指针里面所存放的地址(&a)里面的值(3)获取到了。
因此就有了 p = &a;获取到变量a的地址。 b = *p;(*p 的值就是a变量里面存放的值3),打印b的值就是3。追问

我说的为什么互为逆运算,你说的这是区别

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-05
*就是取指针所指地址处保存的数值,
&就是去一个变量的地址。
例如:
int a=10;
print("\n%d",&a); //打印出来的是a的地址
print("\n%d",*(&a); //打印出来的是10追问

谢谢,但我觉得这是二者区别

第2个回答  2024-01-06
就是区别,而非数学意义上的“逆运算”

形式上的“逆运算”指&取地址,*取地址的值,再加&取地址的值的地址,所以看起来是逆运算
第3个回答  2017-12-05
一个取值,一个取地址追问

谢谢,但是等于没说😂

相似回答