浅谈指针常量和常量指针

描述

这节课我们来讲一讲指针常量和常量指针。
 数组这两个的关系,就跟指针数组、数组指针一样,初学者,很难分的清。
   首先是指针常量。数组  我们听过整型常量、字符常量、字符串常量。整型常量是个不能修改的整数,字符常量是个不能修改的字符。
 那指针常量就很好理解了,是个不能修改的指针。
char arr[] = "helloworld";
char *const p = arr;
 比如指针p,因为它被const修饰,所以p不能修改。数组

 它只能指向字符 'h',如果强行进行p++操作,编译的时候就会报错。
 我们称指针p为指针常量。
 其实在C语言中,说他是常量不合适,只读变量更合适,就是可以通过其他方式让p指向字符 'e'。
char str[] = "helloworld";
char *const p = str;


char **q = (char **)&p;
(*q)++;
 以上代码,可以让指针 p 指向字符'e'。
 接下来是常量指针。数组  我们知道整型指针、字符指针。整型指针是指针指向整数,字符指针是指针指向字符,那常量指针就很好理解了,指针指向常量。
char *p = "helloworld";
 比如这样的代码。字符串"helloworld"存放在只读数据区,我们一般称它为字符串常量,指针p指向这个字符串,所以就可以把p称作常量指针。
const char *p = "helloworld";
在语句的前面加上const就更能说明问题了。

 如果你想通过p去修改字符串的值,那绝对是不可以的,比如:
*p = 'a';
 编译的时候就会报错。

 总结一些,指针常量是指针本身不能修改,常量指针是指针指向的内容不能修改。
 
  审核编辑:汤梓红
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分