【char&const* char】char **const p const char **p char *const *p

C语言里

const char **p
char *const *p
char **const p

看变量声明的时候应该从右至左看,以
char *const *p
为例:
先看从右至左第一个符号*,这表明变量p是指针,再看第2个符号const,它修饰的是*p,*p表示p指向的内容,所以,p指向的内容是常量,下一个符号是*,这就表示该常量为指针,然后是char,就表示指向的内容是char

 

char *const p;与 const char * p;的区别

 

前者定义P为常量,即只能单向赋值一次,P++展开为p=p+1,重复赋值给常量,出错,后者P为地址变量,地址变量是指向该变量的存储地址值如:4B3F6A,不能赋给一个字符值(字符相当于ascii表中对应的整数)如强制赋值,会把原地址变量P变为一个两位数的整数,造成地址指针溢出。而p++,则表示把该地址变量向下一个存储单元移动一位,如4B3F6A到4B3F6B.所以合法。

 

红字部分是否会造出程序跑飞一种可能?

 

const char * p 和 char const * p 是一个意思,都是p所指向的变量的值不能改变,例如:
const char ch = 'a';
const char* p = &ch;
*p = 'b';   //这样是错的

char* const p,意思是p所指向的地址是不能改变的,例如:
char* const p = &ch1;
p = &ch2;  //这样是错的 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值