const的妙用

const在许多编程语言中都有着很大的用处,接下来我们来说说它在c语言中的一些用法.const的作用可以概括为定义常变量(让变量只读,不可改写---不能做左值),用下面的例子详细说明一下:

int a=10;//a可读可写
int b=a;//b读取a的值;
a=20;//a作为左值完成写操作重新赋值成20;
但是这样定义是不对的:
const int a;

先定义的是一个整形变量a,前加const又认为a的值不可变,所以这样定义毫无意义.若是直接给a赋值还是可行的.

特殊用法

1.数据类型对于const来说透明,即要指明变量的数据类型

const int a;
int const a;//const放在数据类型的前后都可以

2.修饰指针(const修饰它的直接右边)

int a=10;
int b=9;
const int *p1=&a;//可以写成int const *p1=&a;
*p1=200;//不可行
p1=&b;//可行

很明显const修饰的直接右边是*p1,*p1不可以作为左值.接下来对上面例子做深入探究:

int*const p3=&a;
p3=&b;
*p3=400;

const int *const p4=&a;
 p4=&b;//p4不可做左值
*p4=700;*p4不可做左值

第一个分析过了,我们说说黄色部分为什么不对,const多了也没关系,我们就记住一点-------const修饰它直接右边,谁和它亲密修饰谁,内部的const修饰p4,p4不可以做左值;外部的const修饰*p4,*p4不可做左值.通过一系列的分析不难得出权限可以同等的传递,缩小传递,唯独不能放大传递.其实很容易理解,就相当于上司的权限大于下部,顶多平起平坐,下部的人都骑到上司头上恐怕不合适吧.
3.用于函数变量的声明
例如:字符串赋值函数 void mystrcpy(char* des,const char *str)将str内容拷贝给des,自然不能让*str做左值;在定义函数时进行必要的描述能减少麻烦,即使函数体的编辑有问题我们也能很快找到问题在哪.

阅读更多
想对作者说点什么? 我来说一句

sql语法的各种妙用

2009年03月02日 79KB 下载

google的妙用

2008年01月04日 5KB 下载

记事本的一些妙用

2011年10月18日 17KB 下载

mssql server语句妙用指导

2010年05月08日 403KB 下载

隐藏域的妙用.doc

2011年06月01日 26KB 下载

shift键的十一个妙用

2010年03月20日 929B 下载

没有更多推荐了,返回首页

不良信息举报

const的妙用

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭