在C++中,地址值和地址有区别吗
3个回答
展开全部
在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++ 中指针变量只是个变量,不是地址。
传值的时候,传入函数内部的是参数的一份拷贝,在函数内部使用的都是拷贝,所以在函数内部无论怎样改变它,一旦离开函数,参数没有任何变化。
传变量,传对象,传指针皆属于传值方式。比如:
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++ 中指针变量只是个变量,不是地址。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询