在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++ 中指针变量只是个变量,不是地址。
浙江启扬智能科技有限公司
2023-06-12 广告
2023-06-12 广告
Android和ARM、Linux之间存在密切的联系。Android是一种基于Linux内核的嵌入式智能操作系统,它采用了ARM处理器作为其主要处理器架构。Android的内核和许多应用程序都是基于ARM架构编写的,包括处理器和内存管理器。...
点击进入详情页
本回答由浙江启扬智能科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |