const 的基本用法

const:定义常变量,不能写,只能读,即只能做为左值

const的三个规则:

(1)数据类型对于const是透明的

例:

        int a = 10;
//int b;
a = 20;//左值,放在赋值符号的左边,写权限
int b = a;//c99
const int ca = 100;//只读
//ca = 200;//error,ca只读,不能写
//ca = 100;//error
//const int cb;//error

int const cb = 100;

数据类型对于const是透明的,int const cb = 100等价于const int cb =100

(2)const用于封锁直接修饰的内容,将该内容变为只读

例:

        int *p = &a;
p = &b;
*p = 200;
const int *cp1 = &a;
cp1 = &b;//ok
//*cp1 = 200;//error
int const *cp2 = &a;//cp2等价cp1
cp2 = &b;
//*cp2 = 200;//error
int *const cp3 =  &a;
//cp3 = &b;//error

*cp3 = 200;//ok

       int const *const ccp = &a;
//ccp = &b;//error
//*ccp = 100;//error

(3)权限只能同等传递或缩小传递

例:

        int a = 10;//读,写
int b = 20;//读,写
const int ca = 10;//读
const int cb = 20;//读
int *p = &a;//ok

//p = &ca;

        //error  若可以的话,则通过*p=40就能把ca的值改变,由于ca是只读的不能被改变,所以p=&ca;//error

 

const int *cp1 = &a;
cp1 = &b;

 

cp1 = &ca;//ok

 

const int *cp2 = &ca;//ok  *cp2被const直接修饰不可能做左值,所以不会通过它修改ca的值
int *const cp3 = &a;

 

//int *const cp4 = &ca;//error   *cp4未被const直接修饰,可以做左值,有可能通过它修改ca的值

另外,附加一小段代码,用一句实现字符串拷贝

#include "stdio.h"
char *Mystrcpy(char *des,const char *src)
{
char *p=des;//p保存des的首地址
while(*des++=*src++);
return p;


int main()
{
char a[10]="ac";
char b[]="abc";
printf("%s\n",Mystrcpy(a,b));
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值