请问在C中函数中的参数(该参数为指针)前加&是为什么,按道理已经是指针了不是应该传的就是地址吗?

如题所述

参数中&表示“引用”就是参数传址,这样“形参”、“实参”就能同步变化,
这是C++新增的功能,而C是没有的,只能靠指针间接实现。
你说的“已经是指针”,是指所“指向变量”的地址,而不是“参数指针自已”的地址,
如果你没有 & 实现传址,你可以改变所“指向变量”的值,而改变
不了这个“指针自已”的值,如果是C的话,要达同样的效果,需要
定义成“指针的指针”,才能达到。
void test (int * & x) // C++
void test (int * * x) // C, 你所考虑的
两者这才相当。
上面说的,不明你明白没有。的确会让初学者搞不清的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-23
参数加&时是表示传入的值是指针的地址,而不是指针指向的地址。
比如定义一个char类型指针*p,将*p指向一个char变量sc。那么*p的值是就是sc的地址。
而&p是指针变量p本身的地址。
第2个回答  2011-12-23
指针也是变量也占存储空间,也有地址!
第3个回答  2011-12-23
取地址符号&
就是比如指针*p,p是指针的地址,当&p的时候,是有**q=*p,&p就是q了,
又有像*this指针,this == &other ,const string &other
又有像*p , p==&a , int a;又像*********************p,
引用也用&符号
相似回答