c中的const使用大全
来源:互联网 发布:网络女主播大闹机场 编辑:程序博客网 时间:2024/05/11 01:21
参考:百度百科
Case1 :
const int n=5;
int a[n];
不能这样使用,即使编译通过,对数组a大小的声明也是无效的。因为const修饰的是只读变量,而ANSI C规定数组定义时长度必须是“常量”,在ANSI C中用什么来定义常量呢?答案是enum类型和#define宏,这两个都可以用来定义常量。
Case 2:
const使用的基本形式是:
形式1:const type m:其中m是限定不可变的,type是数据类型,可以使标准数据类型,也可以是自定义类型。此例中pStr是自定义的数据类型,因此p2是不可变的。
形式2:type const m;//只要牢记这两种基本形式,在含多个const的语句中,可以先把const 去掉分析。
例如:
const char * const p; //*p和p都不可变
//俩个都去掉:char *p;//定义的是字符型指针
//去掉一个:char *const p;//由形式2可知,p不可变
const char *p;//由形式1可知,*p不可变
Case 3
int const * p1,p2;
int d=9;
p2=5;//错误,p2是const的
p1=&d;//正确,p1不是const
*p1=3;//错误,*p1是const
printf("%d\n",*p1);
*p1++;//*的优先级低于++;所以可以编译通过 但地址已经不是d的地址
printf("%d\n",*p1);
int d=9;
p2=5;//正确,p2不是const的
p1=&d;//错误,p1是const
*p1=3;//正确,*p1不是const
补充:
int* const px;//这种定义是不允许的,即使在C中编译可以通过,但在C++编译不通过。(指针常量定义的时候需对其进行初始化)
int const *px;这种定义是允许的。同样在c中可以编译通过,但在C++中编译不通过(常指针可以再定义的时候不初始化)
C++中需要对const常量定义时同时初始化。
总结:
使用const定义只读变量时关键要弄清楚哪些量是只读的不可变的,哪些量是可变的。
例如:
int const px;
px=9;//非法,px是只读的。因此在定义时最好完成初始化工作。
- c中的const使用大全
- C语言中的CONST使用
- const在C中的使用
- const在C中的使用
- const在C/C++中的使用
- const使用大全
- C中的CONST
- C中的CONST
- C/C++ 中的const
- C中的CONST
- C中的CONST
- C/C++中的const
- c中的const
- C中的const
- C中的const
- C#.net中的const
- C#.net中的const
- C/C++中的const
- 去除手机页面点击输入框、链接或者图片阴影
- 存UIImage
- 【万里征程——Windows App开发】文件&数据——文件选取器
- C语言中.h和.c文件解析
- java线程池
- c中的const使用大全
- at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork
- listview提示The content of the adapter has changed but ListView did not receive a notification
- C#基本常识
- IOS高级开发 runtime(1)
- Map的存储方式
- 64位系统打开office总是出现配置进度
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- MySQL批量插入性能优化(二)