前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超实用的const用法

超实用的const用法

作者头像
用户6280468
发布2022-03-16 08:50:14
2010
发布2022-03-16 08:50:14
举报
文章被收录于专栏:txp玩Linux

前言,好久没写文章了,这段时间多多写文章,多总结一下自己这段时间所学的东西,同时和大家分享,一起进步。看到标题,你可能很常见这个const 的用法,但是我还是要总结分享出来,因为const 用法,长时间没有用的话,还是会忘记的,希望也能让你回忆起它的用法。

const的用法最难一点就是和指针在一起用,这是比较难的地方(如果你理解不了的话),特别是刚学指针的时候,你会弄晕了头,以下几种形式在看一些代码会经常看到的:

代码语言:javascript
复制
  a、const int *p

  b、int const *p

  c、int *const p

  d、const int * const p

先看第一个用法,我还是用实际代码来举例: #include int main(void) { int a = 6; int b = 8; const int *p =&a; *p=9;//错误,不能通过指针修改所指向的值 p=&b;//正确,可以修改指针的值 printf("b = %d \n",*p);

代码语言:javascript
复制
 return 0;

}

编译的结果: lesson2.c: In function ‘main’: lesson2.c:8:9: error: assignment of read-only location ‘*p’ *p = 9; ^ 这里编译显示*p为只读,不能通过指针修改所指向的值。

接着是第二种形式的用法: #include int main(void) {

代码语言:javascript
复制
 int a = 6;
 int b = 8;
 int const *p =&a;
 *p = 9;//错误,不能通过指针修改所指向的值
 p=&b;//正确,可以修改指针的值  
 printf("b = %d \n",*p);
return 0;

} 编译效果: lesson2.c: In function ‘main’: lesson2.c:8:9: error: assignment of read-only location ‘*p’ *p = 9; ^ 报错和第一种用法一样,不能通过指针修改所指向的值。

第三种用法: #include int main(void) {

代码语言:javascript
复制
 int a = 6;
 int b = 8;
 int *const p =&a;
 *p = 9;//正确,可以修改指针所的值
 p=&b;//不可以修改指针的值
 printf("b = %d \n",*p);


 return 0;

} 编译效果: lesson2.c: In function ‘main’: lesson2.c:9:7: error: assignment of read-only variable ‘p’ p=&b; ^ 这里报错显示,不可以修改指针的值。

最后一种用法: #include int main(void) {

代码语言:javascript
复制
 int a = 6;
 int b = 8;
 const int *const p=&a;
 *p = 9;
 p=&b;
 printf("b = %d \n",*p);


return 0;

}

编译结果: lesson2.c: In function ‘main’: lesson2.c:8:9: error: assignment of read-only location ‘*p’ *p = 9; ^ lesson2.c:9:7: error: assignment of read-only variable ‘p’ p=&b; ^ 报错显示:既不能修改指针的值,也不能修改指针所指向的值;

总结: 1、const在*前面,就表示cosnt作用于p所指向的是一个常量

2、const在*的后面,表示p本身是一个常量,但是p指向的不一定是常量

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 txp玩Linux 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档