l*********a 发帖数: 445 | 1 看下面代码:
func()
{
std::vector _arr;
int* p = new int(0);
_arr.push_back(p);
p = new int(1);
_arr.push_back(p);
/* 若采用局部变量 p2 表示_arr第二个元素的引用,可以:*/
int*& p2 = _arr[2];
/* 问题:若p2不是局部变量,而是全局变量,也就是在说 p2 在函数体外部已经
声明为 int* p2 了,请问这时如何采用 p2 来表示_arr第二个元素的引用 ??? */
} |
f****a 发帖数: 4708 | 2 /* 若采用局部变量 p2 表示_arr第二个元素的引用,可以:*/
int*& p2 = (_arr[1]); // not [2]
/* 问题:若p2不是局部变量,而是全局变量,也就是在说 p2 在函数体外部已经
声明为 int* p2 了,请问这时如何采用 p2 来表示_arr第二个元素的引用 ??? */
Can't be a reference. For the value of the 2nd element:
int * p2;
p2 = _arr[1]; |
l*********a 发帖数: 445 | 3 1. 谢谢!
2. 您的意思是,如果p2是全局变量,就不能获取 _arr[1] 的引用对吗???
3. 如果 _arr 也是全局变量,这样p2(全局变量)是否可以获取_arr[1]的引用呢?
【在 f****a 的大作中提到】 : /* 若采用局部变量 p2 表示_arr第二个元素的引用,可以:*/ : int*& p2 = (_arr[1]); // not [2] : /* 问题:若p2不是局部变量,而是全局变量,也就是在说 p2 在函数体外部已经 : 声明为 int* p2 了,请问这时如何采用 p2 来表示_arr第二个元素的引用 ??? */ : Can't be a reference. For the value of the 2nd element: : int * p2; : p2 = _arr[1];
|
y*w 发帖数: 125 | 4
p2 = _arr.at(1);
【在 l*********a 的大作中提到】 : 看下面代码: : func() : { : std::vector _arr; : int* p = new int(0); : _arr.push_back(p); : p = new int(1); : _arr.push_back(p); : /* 若采用局部变量 p2 表示_arr第二个元素的引用,可以:*/ : int*& p2 = _arr[2];
|
z****e 发帖数: 2024 | 5 你这完全是一个错误的问题,
引用类型变量必须在声明的时候就定义,引用变量所指向的对象以后就不能改变了,引用变量只能改变他所指向的对象的值。
如果p2是全局的引用类型变量,那么 p2在定义的时候也就有了所指向对象,
以后也就不能再改成指向其他对象了。
【在 l*********a 的大作中提到】 : 看下面代码: : func() : { : std::vector _arr; : int* p = new int(0); : _arr.push_back(p); : p = new int(1); : _arr.push_back(p); : /* 若采用局部变量 p2 表示_arr第二个元素的引用,可以:*/ : int*& p2 = _arr[2];
|