p=p+1为什么是改变了p的地址,而不是改变了p里面r的地址,r,p,q里是被赋予了值的地址还是只是值,求jiao

img

函数调用的时候传入了指针r,但是在函数里面p是用来接收r的
你可以理解为p和r是独立的两个指针变量,但是它们指向了同一个地址

  • 在函数里面对p的++操作,改变的是p指针指向的地址,但是并没有改变r(因为他们是独立的)
  • q传入的是n的地址,操作的是n这个地址的内容,*q就是n,*q+1得到的结果就是n+1
  • 这函数里面的两个变量都是指针,是传址调用,传入的都是地址

如果对你有帮助,还请点个采纳,万分感谢!

因为p是指针。假设内存中存放的数据如下:
地址/该地址内存所存放的内容
0x01/10
0x02/37
0x03/29
现在p的值是0x02,所以当我们用* p时,计算机会把0x02的值读出来,也就是37。
现在执行p=p+1,也就是说p变成0x03了,如果这时使用* p,计算机就会把0x03区块的值读出来,也就是29。
但是内存中0x01,0x02,0x03区块所存放的内容并未发生变化,依然是10,37,29