const修饰指针和引用的用法
来源:互联网 发布:起点网络交易平台 编辑:程序博客网 时间:2024/06/10 18:45
这种情形下,指针本身为常量,不可改变,任何修改指针本身的行为都是非法的.例如:
const int a = 1;
const int b = 2;
int i = 3;
int j = 4;
int* const pi = &i; //ok, pi的类型为int* const , &i的类型为int* const
int* const pi = &a; //error, pi的类型为int* const, &a的类型为const int* const
pi = &j; //error, 指针是常量,不可变
*pi = a; //ok, *pi并没有限定是常量 ,可变
由此看出,pi是常量,常量在初始化和赋值时,类型必须严格一致。也就是
const修饰指针本身时,=号两边的变量类型必须严格一致,否则不能匹配。
2.const修饰引用
3.const修饰指针的引用
ri = &a; //ok
ri = &i; //ok
const int *pi1=&a;
const int *pi2=&i;
ri = pi1; //ok
ri = pi2; //ok
*ri = i; //error
*ri = a; //error
注意这与1-(2)的区别. (2)
用例子说明:
int *const &ri = &i;
去掉ri左边的&号,则为int *const ri,因为ri是别名,故ri的类型应与赋值的数类型一致,ri类型为
int *const,&i为int *const,可以这么做.
int *const &ri = pi; //error,类型不合,一为int *const ,一为int *
int *const &ri = &a; //error,类型不合,一为int *const,一为const int* const
(*ri)++; //ok
i++; //ok
ri = &i; //error
这种情况下,ri为常量,不可更改.
(3)
用例子说明:
const int* pi = &j;
const int* const &ri = pi; //or int const * const &ri = pi;ok
const int* const &ri = &i; //ok
ri是pi的别名,pi的类型应与ri一致。拿掉&,得const int* const ri ,把const ri看作一体,
很容易得出ri的类型信息,就象前面2-(3)所讨论的一样,可以得到赋给ri的只要含有类型int* 即可。
pi的类型为int*,&i的类型为int* const ,可以这么做.
const int * const &ri = &a; //ok
ri++; //error
*ri = 6; //error
言尽于此,希望对初学者有所助益!
- const修饰指针和引用的用法
- const修饰指针和引用的用法
- const修饰指针和引用的用法
- const修饰指针和引用的用法
- const修饰指针和引用的用法
- const修饰指针和引用的用法【转贴】
- const修饰指针和引用的用法【转贴】
- const修饰指针的用法:常量指针和指针常量
- const修饰指针的用法
- const修饰指针和引用释疑
- const修饰指针和引用释疑
- const修饰指针和引用释疑(转载)
- const的指针和引用
- 关于const 修饰变量、引用、指针的说明
- 引用&指针和引用&const的关系
- const与引用,指针的初级用法
- 整理:#define和typedefine的区别 以及const修饰指针的用法
- [C++] C++中const修饰指针,变量, 函数参数和函数返回值的用法总结
- Android 下拉刷新控件SwipeRefreshLayout结合WebView使用
- 一个程序员的迷茫
- Spring3自定义环境配置 <beans profile="">
- 第十四周阅读程序(5):对数据文件的操作与文件流
- C++9.3.6 容器 访问元素
- const修饰指针和引用的用法
- 动态库生成和使用
- Configuring Public Access
- CVPR 2013 录用论文
- 简单叙说 serialVersionUID 的作用 (用于笔记)
- C语言编写静态链接库及其使用
- Firebreath插件制作
- Cygwin的安装配置
- const用法详解(转)