const和指针

当用到指针时,const所修饰的对象牵涉到指针本身和它指向的对象两个实体。当我们将关键字const放到一个指针声明的前面时,这时指针所指向的对象为常量,例如:

char s[] = "Gorm";
const char *pc = s;//指针pc所指向的字符串为常量

我们使用声明符号*const将指针本身说明为常量,该指针称为常指针(或者常量指针)。例如下列代码段中的cp是常指针,就是一个不能移动的固定指针,但是它所指的数据可以改变。

void f1(char *p)
{
char s[] = "Gorm";
const char *pc = s;//pointer to constant 指针所指向的字符串为常量
pc[3] = 'g';//error:不能修改常量
pc = p;

char *const cp = s;
cp[3] = 'a';//ok
cp = p; //error

const char *const cpc = s;
cpc[3] = 'a';//error
cpc = p;//error
}

理解:

char *const cp;//cp是一个常指针,指向字符串(const修饰cp,说明cp不能改变,指向的字符串可以改变)

char const *pc;//pc是一个指针,指向常量字符串(const修饰*,说明pc指向的字符串不可以改变,pc本身可以改变)

const char*const cpc;//指向常量的常指针(cpc本身和cpc指向的字符串都不可以改变)


and:

const char *p;
char const *p;
这两种写法表达的意思完全一样。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值