C语言复习巩固知识点_06_Const专题

初级理解:

const是定义常量,const意味着只读。

含义:

int main()
{
const int a;  //
int const b; 

const char *c;
char * const d; char buf[100]
const char * const  e ;

return 0;
}

Int func1(const )

//第一个和第二个意思一样,代表一个常整型数。

//第三个c是一个指向整形的指针(所指向的内存数据不能被修改但是本身可以被修改)。

//第四个d为常指针(指针变量不能被修改但是它所指向的内存空间可以被修改)

//第五个一个指向常整型的常指针(指针和它所指向的内存空间都不能被修改)

《Effective C++》中关于const的描述更加总结更到位。

char greeting[]="Hello";

char *p=greeting;//non-const pointer,non-const data;

const char *p=greeting;//non-const pointer,const data;

char * const p = greeting;//const pointer, non-const data;

const char * const p = greeting;//const pointer ,const data;

const 语法虽然变化多端,但并不是莫测高深,如果关键字const出现在*左边,表示被指物是常量;

如果出现在*号右边,表示指针自身是常量;如果出现在俩边表示被指物和指针都是常量。

 一个例子

const int max = 10;//只读变量不能修改。
int *p = &max;//编译不能通过,因为编译认为你可能通过指针修改max的值。
int a = 10;

const int *p = &a;//约束指针p指向的变量不能被修改。

int *s = p;//不可以,能力扩展了,可以通过s修改a的值
const int *s = p;//可以
int * const s = p;//不可以,const 修饰的只是指针s本身不能被修改,但是s指向的变量可以被改变。能力扩展了,可以通过s修改a的值 
const int * const s = p;//可以


int a = 10;

int * const p = &a;//指针p本身的值不能被修改

int *s = p;//可以,因为这个定义只说明可以通过s修改a的值,p的值并不会因为s而改变。
const int *s = p//变量不能被修改,和p没啥关系,只是将p的值赋给了s
int * const s = p; //指针s本身的值不能被修改,和p也没啥关系
const int * const s = p;//常指针指向的常变量,和p没啥关系

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值