♣
const和引用
#include <iostream.h>
void main( void )
{
int a[10];
int (&b)[10] = a;
int * const &c = a;
a[1] = 5;
a[2] = 8;
cout <<a[1] <<" " <<a[2] <<endl;
cout <<b[1] <<" " <<b[2] <<endl;
cout <<c[1] <<" " <<c[2] <<endl;
}
关于初始化这两个引用的区别,看得懂的来说说吧!
· 网友精彩回答:
第一个,b是a的引用
第二个,由a产生一个副本,c再对该副本引用。
第一个:b为a的引用
第二个:是用非常量初始化const型的引用,引用成为该变量的只读别名(很少见)
output by g++
---------- capture output ! ----------
5 8
5 8
5 8
output completed (0 sec consumed) - normal termination
经高手指点,解释如下:
int a[10];定义一个数组,a是一个常量指针,不能改变
int (&b)[10] = a;b定义成数组的引用,b是常量指针的引用,不能改变
int * const &c = a;c定义成常量指针的应用,不能改变,如果把const去掉,编译出错
输出结果:
5 8
5 8
5 8
我指的是指针的副本,
一,比如a指向0x40000那么, b也指向0x40000
二,比如a指向0x40000那么会产生一个x指向0x40000,然后b再引用x也指向0x40000
对b操作那么也将对a操作,说指向不太好,但又不知如何表述。
简言之就是
一, int& b=a;
二 int& x=a;int& b=x;
int ival = 1024;
//int * p = &ival;
int *_tmp = &ival; //临时变量为non-lvalue
int *p = _tmp;
//int * const & ri1 = &ival;
int * const & ri1 = _tmp; //此后ri1不可能修改_tmp,若int *&ri1 = _tmp,就出错了
int * & ri2 = p; //不产生临时变量
楼上的,这个确实要产生临时变量,你随便查查关于vc++的书就可以得到结论,比如比较垃圾的一本,vc++6.0从入门到精通
int ival = 1024;
int * p = &ival;
不敢苟同产生临时变量。
to li1418(我很菜,我还笨) 兄
我的理解 type &ival 这个应该是引用类型的数据吧
按来分析一下,不晓得对不
void main( void )
{
int ival = 1024; // 定义变量并初始化
int * p = &ival; // 定义指针并初始化
int * const & ri1 = &ival;
// 上面这句分解如下
// int *= &ival
// int (&ril) 定义引用
// int const (&ril) 定义常量应用(该“引用“的值为常量,在程序运行过程中不可更改)
// int *= &ival 因为定义的是指向指针的引用(*&ril 可以参考primer 3.6小
// 节),这个可以从后面
// 指向初始化的值(&ival)为地址看出。
// 这里面type const *&ril 同 type * const &ril,const type *&ril什么区别我也不晓得
// 如果兄弟弄明白了,或者那位大侠知道请介绍下
// int * & ri2 = p;
// 这个就更easy了 指向pointer的引用
}
另外上面我post的代码确实有问题,因为我用得编译器版本太老了mingw 3.1 ^_^,我download了一个比较新的版本4.1 发现编译器不允许type *ival = const type *ival
不过g++ gcc win32平台下面支持std好的编译器内核好像用的都是这个,我的版本有问题,应该不能够否认这个编译器
- 更多问题:
- · 一个奇怪的问题!!大家都来看看。什么原因呢、
- · 谁来书写“你可能不知道的大陆”(摘自《早报网》)
- · 日本处于“对华心理调适期”
- · 清明节、端午节、中秋节、重阳节要被定为法定节假日?
- · 你们在那吵啊吵的吵什么,真是浪费自己的感情
- · asp.net中使用框架的时候叶面显示一片空白,一点内容也没有,刚刚接触这方面技术请大家指点.
- · 求最大子段和的分治算法
- · 卢武铉告诉布什:“中国是在历史上侵略韩国多达数百次的国家,我们岂能忘记如此刻骨般痛苦的往事呢?”
- · 歌词“给你我所有”的上一句是什么?
- · 达赖喇嘛表示愿意有条件放弃“达赖”的头衔
- · 传巨浪二型导弹成功发射 具二次核打击能力
- · 请问各位,这个函数错在哪里?编译通过,运行错误。
- · 亚太板块变得越发脆弱 日本将遭受灭顶之灾
- · 请推荐一下关于tomcat的资源站点(中文)。
- · 博士街头当乞丐?
- · 标题有点那个,还是不写了吧

