写出优秀的代码,少不了使用const~const的使用,可以进行类型检查,保护被修饰的东西,防止意外修改,增强程序的健壮性(鲁棒性)。在这篇文章中,我们简要介绍一下const的使用。

目录

前言

一、const修饰的常变量

二、深入学习const

我们首先试一下无const的情况:

接下来,我们尝试加上const:

①const加在前面:

②const放在后面:

总结


前言

const的使用,我们就简单地说一下重要的内容,细枝末节就不多讲了。

一、const修饰的常变量

const修饰的常变量在C语言中知识在语法层面限制了变量不能直接被改变,但是它本质上还是一个变量,所以叫常变量。

我们测试一下:

#include<stdio.h>
int main()
{const int a = 14;//这边写成int const a=14;也是可以的a = 13;//errorreturn 0;
}

编译器就会给我们报这样子的错误:

由此,我们也简要了解了const。

二、深入学习const

我们首先试一下无const的情况:

#include<stdio.h>
int main()
{int n = 10;int m = 20;int* p = &n;*p = 20;p = &m;printf("%d %d", n, m);return 0;
}

我们得出的结果是:

接下来,我们尝试加上const:

①const加在前面:

#include<stdio.h>
int main()
{int n = 10;int m = 20;const int* p = &n;*p = 20;p = &m;printf("%d %d", n, m);return 0;
}

不出意外,编译器会报错:

显示第7行错了,我们先把第7行,*p+20;注释掉,就没有报错。

现在的结果是:

可见, const int* p = &n这一语句,保证指针指向的内容不能通过指针来改变,但是指针变量本身内容可变。

②const放在后面:

#include<stdio.h>
int main()
{int n = 10;int m = 20;int* const p = &n;*p = 20;p = &m;printf("%d %d", n, m);return 0;
}

我们编译器依然是报错,但是报错的行数变了!变成了第8行。

我们现在把第8行先注释掉,得出的结果就是这个样子。

可见int* const p = &n;这一语句,修饰的是变量本身,保证了指针变量的内容不能修改,但是指针指向的内容可以通过指针改变。

总结

const 修饰指针变量的时候:
1. const如果放在*的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改
变。但是指针变量本身的内容可变。
2. const如果放在*的右边,修饰的是指针变量本身,保证了指针变量的内容不能修改,但是指
针指向的内容,可以通过指针改变。
我们可以举个例子:
n和p是男女朋友关系。p想让n请自己喝一杯奶茶。n说,你想喝自己买,我才不给你花钱。p想着,你连一杯奶茶钱都不舍得花,我要换男朋友。
const int* p = &n→const这里限制的就是*p。n说,我就是不给你花钱,你想换男朋友就换吧,我不管你。
int* const p = &n;→这里限制的是p。n说,行,只要你不换男朋友,我给你买奶茶。
当然还有一种情况:
#include<stdio.h>
int main()
{int n = 10;int m = 20;const int* const p = &n;*p = 20;p = &m;printf("%d %d", n, m);return 0;
}

const int* const p = &n;→两个都限制。n说,我不仅不想给你花一分钱,我还不让你换男朋友。

C语言|const的使用相关推荐

  1. C语言const使用

    C语言const使用 作者:delnabla 日期:2009-06-11 字体大小: 小 中 大 看了几篇介绍const的文章,这篇讲解的比较透彻易懂,摘录过来! const是一个C语言的关键字,它限 ...

  2. C语言const专题

    C语言const专题 const基础知识(用法.含义.好处.扩展) 含义 Const好处 const基础知识(用法.含义.好处.扩展) int main() {const int a; // int ...

  3. C语言 const 和 define 区别 - C语言零基础入门教程

    目录 一.const 使用 1.const 修饰变量 2.const 修饰指针 3.const 修饰在函数名前面 4.const 修饰在函数名后面 5.const 修饰函数参数 二.define 使用 ...

  4. C语言 const 修饰函数返回值 - C语言零基础入门教程

    目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 二.const 修饰在函数名前面 三.const 修饰在函数名后面 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : ...

  5. C语言 const 修饰指针 - C语言零基础入门教程

    目录 一.const 简介 二.const 修饰指针 1.const int *p 2.int const *p 3.int * const p 4.const int * const p 三.猜你喜 ...

  6. C语言 const 修饰变量 - C语言零基础入门教程

    目录 一.const 简介 二.const 实战 1.使用 const 修饰变量必须初始化 2.使用 const 修饰变量不初始化 3.修改 const 修饰变量的值 三.重点提示 四.猜你喜欢 零基 ...

  7. C语言const:禁止修改变量的值

    C语言const:禁止修改变量的值 有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定.例如,用一个变量来表示班级的最大人数,或者表示缓冲区大小.为了满足这一要求,可以使用co ...

  8. C/C++ 语言 const 关键字

    C/C++ 语言 const 关键字 1. Constants - 常量 ANSI C 允许声明常量,常量的样子和变量完全一样,只是它们的值不能被修改.使用 const 关键字声明常量: const ...

  9. C语言 const 修饰函数参数 - C语言零基础入门教程

    C语言 const 修饰函数参数 - C语言零基础入门教程 目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 3.const 修饰在函数名前面 4.const 修饰在函数 ...

  10. 计算长方形体积c语言const,c语言const

    <OOC>笔记(1)--C语言const.static和extern的用法 笔记(1)--C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种 ...

最新文章

  1. bartender一行打印两个二次开发_C++ 智能指针和二叉树:图解层序遍历和逐层打印二叉树...
  2. Oracle 统计信息(1)
  3. Spring中获取Session的方法汇总
  4. Linux 下软件的安装
  5. 《》猿从程序书评项目经理-猿自办节目
  6. 【SDL的编程】VC环境搭建
  7. Hbuilder问题记录
  8. java分布式特点_java分布式架构是什么?分布式架构的优缺点有哪些?
  9. 使用python修改微信支付宝运动步数
  10. 国际结算三大方式之一——托收
  11. Vmware安装MacOS提示请选择您要安装的macOS的磁盘
  12. Yourkit 监控Jetty(stand-alone)
  13. iphone icloud无法载入储存空间信息
  14. 美团数据治理一体化实践
  15. 我的世界网易服务器修改世界,我的世界:1.16改变两个版本更新频率?网易版异常乱封大批账号?...
  16. C++ std::ios::tie
  17. 密码学笔记5 非对称密钥算法
  18. 西邮linux面试题,西邮Linux兴趣小组纳新免试题! come on!
  19. 台式计算机鼠标不动,台式电脑鼠标不动了怎么办 鼠标不动了怎么用键盘修复 鼠标不亮了也动不了了怎么办...
  20. 如何在Mac上禁用屏幕快照预览缩略图

热门文章

  1. 五类 六类网线相关知识
  2. 腾讯实时音视频通话sdk集成----小程序版本
  3. IDEA安装和使用教程,idea 安装本地插件
  4. MySQL内置函数中的日期和时间函数详解
  5. 打造超完美主页?20个主页设计技能你不容错过
  6. 图片过大怎么办?如何把图片压缩到最小
  7. 红黑树和红黑树的原理详解
  8. 【三角形判断】测试用例设计
  9. 如何在VC中加减日期及 CTime COleDateTime的常用操作和比较
  10. 学术必备!35个国内外社会科学数据网站资源汇总(附链接)