const 数组 & 作用域
来源:互联网 发布:707的医药软件 编辑:程序博客网 时间:2024/06/06 17:46
const int a[10] = {1,2,3,4,5};
int i =0;
for(i = 0; i < 5; i++)
a[i] = a[i] +1; // 数组a里面内容不能能修改
但若用指针指向数组地址
int *p = a ;
for(i = 0; i < 5; i++)
p[i] = p[i] +1; // 可以修改
这是因为const是对编译器来说的,如果你能骗过编译器,干什么都行
const就是一个挂羊头卖猪肉的伪君子“常量”
在C++里,private数据成员依然能通过指针访问 (类基址+相对偏移) 但用::运算符不行
const int a = 3;
a = 4; //不能直接赋值
再看:
const int a = 3;
int *p = &a;
*p = 4; //可以赋值,走后门了咯
作用域
int main()
{
{
int a = 1; printf("%d\n",a); //输出 1
}
int a = 2;printf("%d\n",a); //输出2,而且编译器不会认为变量重定义而报错
}
每个变量只在其作用域内有效 { }
const和volatile 可以同时声明一个变量吗?
void f()
{
const int count = 5;
int i = 0;
for(i=0; i<count; i++)
{
sleep(500);
}
}
大家看一下 我们是不是可以确认 这个循环一定做5次呢?
现代编译器对于这个情况一定是5次 ,在编译的时候 编译器就觉得都是const的了 在这个函数中又不可能改变值了 直接用5代替了
const只是表示变量只读,不能出现在赋值符号左边,防止被意外修改,并且编译器一定会优化,不会每次去内存取值。这时候如果外部事件(如中断服务程序)改变了这个变量的内存值,那么编译器优化就不会又反应,导致错误
- const 数组 & 作用域
- const作用域范围
- const 作用
- const 作用
- const作用
- const作用
- const作用
- const作用
- static作用const作用
- fun()const作用
- const 的作用
- C++中的Const 作用
- const的作用
- Const的作用
- const的作用
- const的作用
- const的作用
- const 的作用
- Java开发环境配置(JDK)
- ARM+linux系统移植3G拨号上网收发短信(三)
- 博客迁移公告[最后一篇]
- C++ 自定义结构体和类 内存对齐
- Paper Reading - Snap and ask: Answering Multimodal Question by Naming Visual Instance
- const 数组 & 作用域
- python异常处理
- ContentResolver query 参数详解
- SourceInsight增加支持的文件类型
- shell script中的常用判断语句
- 在数据绑定中使用StringFormat
- 第一次
- hdu 2993 MAX Average Problem 斜率优化DP
- 新的开始之Redis的安装