社区
C++ 语言
帖子详情
C++数组元素为什么不可以是引用?说出最说服力的原因……
Paradin
2008-05-25 10:46:14
int i, j;
int & arr[] = {i, j};
//use arr...
...全文
2370
94
打赏
收藏
C++数组元素为什么不可以是引用?说出最说服力的原因……
int i, j; int & arr[] = {i, j}; //use arr...
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
94 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangjieest
2012-10-08
打赏
举报
回复
遇到过这样的...
obj *a,*b,*c;
obj** p[3]={&a,&b,&c};
只是最后使用的时候还需要强制类型转换....
((obj*)*p[i])->methods()....
感觉麻烦...不过又没有好的方式通用...
haibocui
2012-07-10
打赏
举报
回复
引用即别名,不占内存,在数组中存引用就是非法,虽然在底层引用是用指针实现的,但概念上得达到引用是别名的目的,所以编译器会把数组中存引用认定为非法
jasondmy
2010-09-20
打赏
举报
回复
谢谢分享~~
minmin0876
2010-09-20
打赏
举报
回复
我在不小心点击鼠标的时候 给77楼丢了个板砖 不好意思啊
不是有意的
love277369986
2010-04-05
打赏
举报
回复
以上贴作废,本人理解错了。。int (&arr)[]是对数组的引用了,而不是数组元素类型为int &的数组,继续潜水。。。。
love277369986
2010-04-05
打赏
举报
回复
我觉得只有45楼的说法是比较正确的,当然12楼理论上也是蛮合理的~说数组空间连续的都是比较合理的,我认为45楼合理~是因为她定义了int (&arr) []=..这才真正定义了一个数组元素为int &引用类型的数组吧?
要注意到运算符的优先级?
这只是小弟的浅见,欢迎大家拍砖~- -~
还有楼主的问题是C++数组原始问什么不可以是引用?好像有点歧义
是1,C++数组的数组元素的类型不可以是引用类型,如int (&arr)[5]
还是2,C++里面的一个数组中不可以存放引用类型的变量,如int i,j;
int & x=i,y=j;
int arr[]={x,y}不成立?
我想先问清楚是问题一还是问题二?额......
taodm
2008-05-30
打赏
举报
回复
[Quote=引用 87 楼 cunsh 的回复:]
char& arr[5];
sizeof(arr[0]) = ?
sizeof(arr) = ?
siseof(arr) / sizeof(arr[0]) = ?
[/Quote]
sizeof(void)?????
sizeof(arr)亦可如此。
达成自相容的路不只一条,C++只不过选择了现在这条。
cunsh
2008-05-30
打赏
举报
回复
char& arr[5];
sizeof(arr[0]) = ?
sizeof(arr) = ?
siseof(arr) / sizeof(arr[0]) = ?
lllanm
2008-05-29
打赏
举报
回复
实用吗?? 用法 用例 能简化程序, 能使运行速度加快 有什么值得研究的地方??
haokongdashi
2008-05-29
打赏
举报
回复
还没有想这么深奥的问题。
lauxp
2008-05-29
打赏
举报
回复
我觉得:
引用是别名,
编译器看到的是一个引用声明(注意,严格意义上讲不存在引用的定义),你不能获取一个引用到底被安排在那里,是个什么东西,当然大部分可能会实现为指针
至于数祖,是一个定义,一段空间,用来存储东西的,存放引用干什么,存放编译器才知道的引用有什么意义?
「已注销」
2008-05-29
打赏
举报
回复
learning...
lyle3
2008-05-29
打赏
举报
回复
学习~
fuqd273
2008-05-29
打赏
举报
回复
[Quote=引用 18 楼 arong1234 的回复:]
简而言之,12楼说的最貌似一个合理的原因。但是要说这一定能说服所有人,则不一定。
原因很简单,不是所有东西都有可信服的原因的。这只是C++语言的一个规定而已,可能是当时的写标准的人基于已经实现的东西达成的一个妥协,也许当时没有几个人认为“引用的数组”很有必要(我现在都认为无必要)。为什么需要把一个没什么大用处的东西加入标准了来增加编译器的复杂度呢?
所以,世界是不完美的,不是所有的东西都有“合…
[/Quote]
顶,这才是最大的理由
fly4free
2008-05-29
打赏
举报
回复
再次另外:
无论是那个高级语言的引用的汇编级实现还是相当于c/c++语言中的指针。变成机器代码过程中的过程不一样而已。
如此这样,还要硬去实现,有什么意义吗?
candy110
2008-05-29
打赏
举报
回复
MARK~~
cppscript
2008-05-29
打赏
举报
回复
你那个引用
要引用多少个元素
编译器自己之前能确定下来吗
建议多研究一下引用的实质
cppscript
2008-05-29
打赏
举报
回复
[Quote=引用 2 楼 gofqjyie 的回复:]
晕,你的类型好歹也要匹配啊!
这种用法绝对错误.
[/Quote]
fly4free
2008-05-29
打赏
举报
回复
指针数组的元素可以为null
可是C++的引用规定了一旦确定,不可更改。
如此这般,两个规定有冲突。所以……按照标准是不可以的
但,如果C++可以重新改变引用……
貌似C#就给实现了~呵呵。没必要。
另外,个人觉得,C++的引用是编译时确定,是别名,有点类似define,但有类型检查。
(此“另外”可以随意无视~)
antimatterworld
2008-05-29
打赏
举报
回复
补充:《深度探索C++对象模型》高深的很,这本书可能详细讲解了引用的知识
暂时还没看呢。
加载更多回复(74)
细谈C语言指针第三篇目——数组及数组和指针联系
首先我们先来给大家简单介绍一下C语言中数组的概念及其周边知识:一组相同类型元素的集合。“一组”说明了数组可以一次性定义和存储一系列数据元素,“相同类型”则揭示了
数组元素
在数据类型上的统一性原则。类型 数组名[数组大小];//这是一个int类型的数组,数组可以存放10个元素,每个元素是int类型。//这是一个float类型的数组,数组可以存放5个元素,每个元素是float类型。这里的数组的大小就是数组能存储数据元素的多少。
C++
内存
一篇好文章,记录一下。 转自点http://blog.csdn.net/zhanghefu/article/details/5003407 [导语] 内存管理是
C++
最令人切齿痛恨的问题,也是
C++
最有争议的问题,
C++
高手从中获得了更好的性能,更大的自由,
C++
菜鸟的收获则是一遍一遍的检查代码和对
C++
的痛恨,但内存管理在
C++
中无处不在,内存泄漏几乎在每个
C++
程序中都会发生,因
2025-5-1-
C++
学习 数组(3)
数组3
C++
每日一问:
C++
内存管理,包括栈和堆的区别
1 内存管理 Bill Gates 曾经失言:640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,,读者需细心阅读,做到真正地通晓内存管理。 1.1
C++
内存管理详解 1.1.1 内存分配方式 1.1.1.1 分配方式简介 在
C++
中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时
C++
内存管理与指针的使用
摘引:http://blog.csdn.net/tiangwan2011/article/details/7909390 导语] 内存管理是
C++
最令人切齿痛恨的问题,也是
C++
最有争议的问题,
C++
高手从中获得了更好的性能,更大的自由,
C++
菜鸟的收获则是一遍一遍的检查代码和对
C++
的痛恨,但内存管理在
C++
中无处不在,内存泄漏几乎在每个
C++
程序中都会发生,因此要想成为
C++
高手,内存...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章