数组的引用和引用的数组
如图求大神解答为什不引用的数组不可以
而数组的引用可以?
网上的答案不是很理解 可以引用数组,但是不能在数组中存储引用
关键在于运算先后顺序,如果不加括号,[]优先级高一些,被先操作,等价于 & (a)
这样是不可以的,相当于是 &*a BngThea 发表于 2019-1-8 14:38
关键在于运算先后顺序,如果不加括号,[]优先级高一些,被先操作,等价于 & (a)
这样是不可以的,相当 ...
(这样是不可以的,相当于是 &*a) 这是为什么? 竟无语凝噎 发表于 2019-1-8 14:39
(这样是不可以的,相当于是 &*a) 这是为什么?
形参用 a[] 相当于 *a BngThea 发表于 2019-1-8 15:11
形参用 a[] 相当于 *a
这个我知道 ,您的意思是不能引用一个指针的意思是吗?
竟无语凝噎 发表于 2019-1-8 15:28
这个我知道 ,您的意思是不能引用一个指针的意思是吗?
不是不能引用指针,是在形参中不能这样写,上面不是给了正确的写法吗 BngThea 发表于 2019-1-8 15:11
形参用 a[] 相当于 *a
而且我还有一个问题 , 就是如果不作为形参,而只是普通的。
int &a与int(&a) 的区别在我理解是 :
第一种情况 a数组中有10个引用, 而第二种情况是a 是一个维度为10的数组的引用。
为什么第一种就不行? f(int &arr); // arr是一个数组,有10个元素,这10个元素的类型都是引用,这10个元素的每一个都引用一个int
f(int (&arr));// arr是一个引用,引用了一个数组,引用的这个数组有10个元素,每一个元素都是int
数组里面可以存储引用吗?
人造人 发表于 2019-1-8 22:10
可以引用数组,但是不能在数组中存储引用
为什么在数组中不能存储引用? 引用的数组是非法的,在c++中不允许被使用! 本帖最后由 竟无语凝噎 于 2019-1-9 10:51 编辑
人造人 发表于 2019-1-8 22:10
可以引用数组,但是不能在数组中存储引用
#include <iostream>
#include <string>
int main( void )
{
int a[] = {10,20,30};
int b;
int &b0 = a;
int &b1 = a;
int &b2 = a;
b = b0;
b = b1;
b = b2;
for (auto i : b)
{
std::cout << i << std::endl;
}
return 0;
}
上面这段代码是我对 int &b[] 的理解
这里b是一个数组 , 其中的每个元素都是引用。
或者说这么理解哪里有问题? #include <iostream>
#include <string>
int main( void )
{
int a[] = {10,20,30};
int b;
int &b0 = a;
int &b1 = a;
int &b2 = a;
b = b0;
b = b1;
b = b2;
for (auto i : b)
{
std::cout << i << std::endl;
}
return 0;
}
数组b中存储的是什么?
数组b中存储的是int
b0是引用,引用了数组的第0个元素,第0个元素是int类型
b1是引用,引用了数组的第1个元素,第1个元素是int类型
b2是引用,引用了数组的第2个元素,第2个元素是int类型
b = b0;// 对数组第0个元素赋值,因为b0引用了b,所以b = b0;和b = b;效果一样
b = b0; // 相当于b = b;
b = b1; // 相当于b = b;
b = b2; // 相当于b = b;
数组b中存储的是int
b0、b1、b2是引用
人造人 发表于 2019-1-9 12:23
#include
#include
十分感谢您的回复{:5_109:}
页:
[1]