1.2.5对指针使用const限定符
2015-12-22 23:05
225 查看
1.左值和右值
左值必须能被计算和修改。
左值表达式在赋值语句中既可以作为左操作数,也可以作为右操作数;
2.指向常量的指针
const int *p;
它告诉编译器,*p是常量,不能将*p作为左值进行操作。但这里的指针p还是一个变量,它的内容存放常量的地址,所以先声明常量指针再初始化是允许的,指针也是允许 修改的,例如:
int
a=
0
,b=
1
;
const
int
*p;
//
声明常量指针
p
p=&a;
//p
指向
a
p=&b;
//
修改指针
p
让其指向
b
,允许
*p=
2
;
//
不允许
int a=0,b=1;
const int *p; //声明常量指针p p=&a; //p指向a
p=&b; //修改指针p让其指向b,允许
*p=2; //不允许
p不能像*p = 2这样赋值,但是可以通过使用"a = x "改变a的值。
const int y = 58;//常量y,
const int *p = &y;//定义指向常量y的指针p;
3.常量指针
x = 5;
int *const p = &x;
因为这个指针本身是常量,编译器要求给它一个初始化值;
不能改变p的指向,但是这个地址里的内容可以使用间接引用运算符“*”改变其值,例如语句“*p = 56”,将上面的x的值改变为56.
左值必须能被计算和修改。
左值表达式在赋值语句中既可以作为左操作数,也可以作为右操作数;
2.指向常量的指针
const int *p;
它告诉编译器,*p是常量,不能将*p作为左值进行操作。但这里的指针p还是一个变量,它的内容存放常量的地址,所以先声明常量指针再初始化是允许的,指针也是允许 修改的,例如:
int
a=
0
,b=
1
;
const
int
*p;
//
声明常量指针
p
p=&a;
//p
指向
a
p=&b;
//
修改指针
p
让其指向
b
,允许
*p=
2
;
//
不允许
int a=0,b=1;
const int *p; //声明常量指针p p=&a; //p指向a
p=&b; //修改指针p让其指向b,允许
*p=2; //不允许
p不能像*p = 2这样赋值,但是可以通过使用"a = x "改变a的值。
const int y = 58;//常量y,
const int *p = &y;//定义指向常量y的指针p;
3.常量指针
x = 5;
int *const p = &x;
因为这个指针本身是常量,编译器要求给它一个初始化值;
不能改变p的指向,但是这个地址里的内容可以使用间接引用运算符“*”改变其值,例如语句“*p = 56”,将上面的x的值改变为56.
相关文章推荐
- 我的设计模式之旅-策略设计模式
- html5 canvas 笔记五(合成与裁剪)
- java 反射详解
- Java中的简单工厂模式
- S5PV210 裸机开发驱动之LED灯
- ORA-16401: archivelog rejected by RFS
- 关于RecyclerView插入列表第一条无动画效果的解决办法
- Educational Codeforces Round 2 Edge coloring of bipartite graph
- sed用法
- LVS+keepalived+LNMP架构
- 以太网,IP,TCP,UDP数据包分析
- QTP10破解方法及mgn-mqt82.exe下载
- 机器学习:你需要多少训练数据?
- 单片机定时/计数器
- Grails domain dateCreated、lastUpdated相关设置
- js function随笔
- android124 zhihuibeijing 新闻中心-组图
- 51单片机最小系统——复位
- jQuery:html(),text(),val() JS:innerHTML,innerText,value
- CF595B 数学