指针与const(笔记)

指针本身可以是const,指针所指向的变量也可以是const
区别和联系

指针是const
表示一旦得到了某个变量的地址,不能在指向其他变量
int *const q = &i; //q是const
*q = 26; //OK
q ++; //ERROR

如果p所指的int是const
表示不能通过指针变量去修改那个变量(并不是说能使那个变量成为const)
const int *p = &i;
*p = 26; //ERROR! (*p是const)
i = 26; //OK
p = &j;//OK

int i;
const int *p1=&i;//通过指针不可修改
int const *p2=&i;
int *const p3=&i; //指针不可修改

判断哪个被const的标志是看const的位置在*的前面还是后面,在后面说明指针不可被修改,在前面说明通过指针不可修改

转换
总是可以把一个非const的值转换成const的
void f(const int *x);//函数中定义了一个const的指针,在使用函数的过程中保证不会动外面变量的值
int a = 15;
f(&a);//OK
const int b = a;

f(&b);//OK
b = a + 1; //Error
当传递的参数的类型比地址还大,是常用的手段:既能用较少的字节数传递值给参数,又能避免函数对外面的变量的修改

const 数组
如const int a[]={1,1,2,4,4,5,}
数组变量已经是const的指针了,再加const表明数组的每个单元都是const int
所以必须通过初始化进行赋值

保护数组值
数组传入函数的是地址,因此函数可以对数组内部的值进行修改,为了保证数组内部的值不被破坏,可以设置参数为const
int sum(const int a[], int len);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值