C语言函数调用问题

C语言函数调用问题书上说:“不可能通过调用函数来改变实参指针变量的值,但可以改变实参指针变量所指变量的值。”为什么不能呢?

第1个回答  2018-03-01
C所有的函数调用都是将实参的值“拷贝”给形参,所以指针也不例外。函数中改变形参指针的值改变的只是形参指针的指向,函数退出后都销声匿迹了,与实参指针无关。追问

那请问为什么这个函数又能让指针变量所指变量的值发生改变呢,函数退出后仍然生效~

然而这个又不行

为什么好难呀,大佬教教我

感谢

追答

指针a(实参)指向c,调用函数时实参a赋给了形参b,那么b也指向了c;所以*a、*b都是c,所以函数中通过形参指针b改变目标*b(就是c)的值是理所当然的。但改变b能改变a吗?你不要把“通过形参指针改变目标的值”和“改变形参指针的值”混为一谈!

第2个回答  2018-03-01
实参指针变量相当于一个地址。更通俗一点,这是打开“变量”这个盒子的钥匙,你可以决定盒子里放什么,但你不可能决定这个盒子用什么钥匙。一旦你创建了一个指针变量,它就相当于一个做好的钥匙,不可更改追问

你好。这个函数是以指针变量(地址)作为形参,然后,,执行这个函数他们的地址不也发生了交换吗?

相似回答