C++ 中:const int * a 和 const int * & a的区别。

2025-01-05 11:10:56
推荐回答(4个)
回答1:

const int *a 是指向const int 变量的指针,const int *& a 是指向const int 变量的指针的引用,在座函数形参时,区别是很大的,函数的参数进行的是值拷贝,即使传的是指针,也的对指针(即指针里存的地址)的拷贝,因此,如果在函数内部改变了参数自身的地址,比如使参数等于NULL,此时是不会影响函数外指针的本身的地址值的,但使用指针的引用的话就可避免这种情况,指针的引用等效于指针的指针。

回答2:

const int *a;

a是一个指针,指向const int类型的变量。

const int * &a;

a是一个引用,引用的是一个 const int *的指针。

例如:

 int a = 10;
 const int *pa = &a;
 const int * &rpa = pa;
 cout<< *pa < cout<< *rpa <

pa是一个的类型是const int *,指向a,const的意思是不能修改pa指向的变量的值。

rpa是一个const int * &类型,是pa的一个引用,用法跟pa一样。

 

这里就是弄清楚引用,例如

int a = 10;
int &ra = a;

ra就是a的引用,ra实际上指向a的地址,但是它不是指针,是引用,是a的别名,用法跟a一样。

cout<

输入也是10.

回答3:

const int * a 是整型常量指针,它所指向的对象值不可改变,
const int *&a是整型常量指针的引用,它定义了一个整型常量指针的引用(或别名)。

他们两个的主要区别:第二个在声明时必须初始化,它本身并不占用内存,只是它所指向对象的别名。引用在初始化后不可修改。
第一个可以只声明不初始化,在使用时再赋值即可。在声明后就对其分配了内存空间。

注:指针和引用的主要区别:
1、可以定义指针的引用,没有引用的指针
2、可以定义数组的引用,没有引用的数组
3、可以定义指向空值的指针,不能定义指向空值的引用。

希望对你有所帮助!

回答4:

const int * & a是引用
两个a用法差不多,但意义有区别
引用相当于别名,具体参见C++相关说明