没有合适的资源?快使用搜索试试~ 我知道了~
const的一些操作
资源推荐
资源详情
资源评论
问题1:const变量&常量
?
例:为什么下面的例子在使用一个const变量来初始化数组,ANSI?C的编译器会报告一个错误呢?
const?int?n?=?5;
int?a[n];
答案与分析:
1)这个问题讨论的是“常量”与“只读变量”的区别。常量,例如5,?"abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它。而“只读变量”则是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier)。上述代码中变量n被修饰为只读变量,可惜再怎么修饰也不是常量。而ANSI?C规定数组定义时长度必须是“常量”,“只读变量”也是不可以的,“常量”不等于“不可变的变量”。
2)但是在标准C++中,这样定义的是一个常量,这种写法是对的。实际上,根据编译过程及内存分配来看,这种用法本来就应该是合理的,只是ANSI?C对数组的规定限制了它(实际上用GCC或VS2005编译以上代码,确实没有错误产生,也没有给出警告)。
3)那么,在ANSI?C中用什么来定义常量呢?答案是enum类型和#define宏,这两个都可以用来定义常量。
编辑本段
问题2:const限定内容
?
例:下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢?
typedef?char?*?pStr;
char?string[4]?=?"abc";
const?char?*p1?=?string;?//1式
const?pStr?p2?=?string;?//2式
p1++;
p2++;
答案与分析:
问题出在p2++上。
1)const使用的基本形式:?const?type?m;
限定m不可变。
2)替换基本形式中的m为1式中的*p1,替换后const?char?*p1;
限定*p1不可变,当然p1是可变的,因此问题中p1++是对的。
3)替换基本形式中的type为2式中的pStr,替换后const?pStr?m;
限定m不可变,题中的pStr就是一种新类型,因此问题中p2不可变,p2++是错误的。
编辑本段
问题3:const?&?指针
?
?
例:为什么下面的例子在使用一个const变量来初始化数组,ANSI?C的编译器会报告一个错误呢?
const?int?n?=?5;
int?a[n];
答案与分析:
1)这个问题讨论的是“常量”与“只读变量”的区别。常量,例如5,?"abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它。而“只读变量”则是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。C语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier)。上述代码中变量n被修饰为只读变量,可惜再怎么修饰也不是常量。而ANSI?C规定数组定义时长度必须是“常量”,“只读变量”也是不可以的,“常量”不等于“不可变的变量”。
2)但是在标准C++中,这样定义的是一个常量,这种写法是对的。实际上,根据编译过程及内存分配来看,这种用法本来就应该是合理的,只是ANSI?C对数组的规定限制了它(实际上用GCC或VS2005编译以上代码,确实没有错误产生,也没有给出警告)。
3)那么,在ANSI?C中用什么来定义常量呢?答案是enum类型和#define宏,这两个都可以用来定义常量。
编辑本段
问题2:const限定内容
?
例:下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢?
typedef?char?*?pStr;
char?string[4]?=?"abc";
const?char?*p1?=?string;?//1式
const?pStr?p2?=?string;?//2式
p1++;
p2++;
答案与分析:
问题出在p2++上。
1)const使用的基本形式:?const?type?m;
限定m不可变。
2)替换基本形式中的m为1式中的*p1,替换后const?char?*p1;
限定*p1不可变,当然p1是可变的,因此问题中p1++是对的。
3)替换基本形式中的type为2式中的pStr,替换后const?pStr?m;
限定m不可变,题中的pStr就是一种新类型,因此问题中p2不可变,p2++是错误的。
编辑本段
问题3:const?&?指针
?
资源评论
xy913741894
- 粉丝: 174
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功