在C++中,地址值和地址有区别吗

如题所述

在C++中,有传值和传引用两种方式。

传值的时候,传入函数内部的是参数的一份拷贝,在函数内部使用的都是拷贝,所以在函数内部无论怎样改变它,一旦离开函数,参数没有任何变化。
传变量,传对象,传指针皆属于传值方式。比如:
some_fun(int a)
some_fun(SOMECLASS b)
some_fun(int* c)
皆为传值方式。

传引用,传入函数内部的是参数本身,所以在函数内部改变它,在离开函数后,这种变化会反应在参数上。比如:
some_fun(int& a)
some_fun(SOMECLASS& b)
some_fun(int*& c)

指针参数当然是传值的,传的是指针变量的值,比如
void func(void* p);
int a = 0;
int* ptr = &a;
func(ptr);
这样,传给 func() 的是 ptr 的值,这个值,数值上就是变量 a 的地址值。
而关于 a 的地址,估计你想问的是指针和指针变量的区别。因为地址应该理解为一个内存中的物理位置,只是我们通常用一串十六进制数表示而已。比如你家的地址,你可以用“地址值”表示,比如经纬度什么的。通常我们所说的“地址”当然是指“地址值”。
结论就是,不可能传地址,只能传地址值。指针变量的值就是地址值。C/C++ 中指针变量只是个变量,不是地址。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-07
函数形参和实参传递, 如果传递的是地址, 那他的实参和形参共指向一个地址, 所以形参改变实参的值能传回主函数,, 如果改变地址指向是不能的。
第2个回答  2017-03-07
地址是房子, 地址值是房子里住的人
相似回答