总结C语言中const关键字的使用

 更新时间:2016年11月26日 16:10:53   投稿:daisy  
一起虽然学过c语言,但是并没有写过太多的代码,最近想要拾起c语言,就写了一些代码,但是对const关键字比较陌生,这里总结一下,方法自己和大家有需要的时候参考借鉴,下面跟着小编一起学习学习吧。

什么是const?

常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)

为什么引入const?

const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。

const关键字使用非常的灵活,这一点和php差别很大,php中const用来在类中定义一个常量,而在c中,const因位置不同有不同的作用,因情景不同有不同的角色,使用起来也是非常的灵活。

(1):const用来修饰普通的变量(指针变量除外)的时候,const type nametype const name 这两种形式是完全等价的,都表示其是常量,不能进行修改。

#include <stdio.h>
int main(){
  const int num =23;
  printf("result=%d\n",num);
  num =31;
  printf("result=%d\n",num); //报错,num是常量,不能修改
}

(2):const用来修饰指针变量的时候,分为以下四种情况

1、const type *name :这种情况下,const修饰的指针变量name所指向的type类型对象,也就是说指向的这个对象是不能进行修改的,因为其是常量,而指针变量确实可以进行修改的

#include <stdio.h>
int main(){
  int tmp = 23;
  const int *num = &tmp;
  printf("result=%d\n",*num);   
  (*num) = 24; //报错,因为指针num指向的int类型的对象是不能进行修改的
  printf("result=%d\n",*num); 
}

2、 type const *name :这种情况下,const修饰的指针变量name所指向的type类型对象,意思完全同上,只是颠倒了以下顺序。

#include <stdio.h>
int main(){
  int tmp = 23;
  int const* num = &tmp;
  printf("result=%d\n",*num);   
  (*num) = 24; //报错,因为指针num指向的int类型的对象是不能进行修改的
  printf("result=%d\n",*num); 
}

3、type * const name :这种情况下,const修饰的指针变量name,也就是说这个指针变量的值是不能进行修改的,但是指针变量所指向的对象确实可以修改的

#include <stdio.h>
int main(){
  int tmp = 100;
  int *const num = &tmp;
  printf("result=%d\n",*num);  
  int change = 23; 
  num = &change; //报错,因为指针num是不能进行修改的
  printf("result=%d\n",*num); 
}

4、const type * const name :这种情况下,const修饰的指针变量name以及指针变量name所指向的对象,也就是说这个指针变量以及这个指针变量所指向的对象都是不能进行修改的

(3):const在函数中的参数的作用:

void get_value( const int num ){
  num=23; //报错
}

调用get_value()函数的时候,传递num参数到函数,因为定义了const,所以在函数中num是不能进行修改的

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • C/C++高精度算法实现思路与代码

    C/C++高精度算法实现思路与代码

    高精度算法就是能处理高精度数各种运算的算法,但又因其特殊性,故从普通数的算法中分离,自成一家,下面这篇文章主要给大家介绍了关于C/C++高精度算法实现思路与代码的相关资料,需要的朋友可以参考下
    2023-11-11
  • Python HTTP服务搭建显示本地文件

    Python HTTP服务搭建显示本地文件

    这篇文章主要介绍了Python HTTP服务搭建显示本地文件的相关资料,需要的朋友可以参考下
    2017-02-02
  • C++实现的打字母游戏示例

    C++实现的打字母游戏示例

    这篇文章主要介绍了C++实现的打字母游戏,涉及C++字体操作、时间及键盘响应相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • C语言实现变色进度条

    C语言实现变色进度条

    这篇文章主要为大家详细介绍了C语言实现一个变色的进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C语言操作符进阶教程(表达式求值隐式类型转换方法)

    C语言操作符进阶教程(表达式求值隐式类型转换方法)

    这篇文章主要为大家介绍了C语言操作符进阶教程(表达式求值隐式类型转换方法)
    2022-02-02
  • 浅谈VS中添加头文件时显示无法找到文件的问题

    浅谈VS中添加头文件时显示无法找到文件的问题

    下面小编就为大家带来一篇浅谈VS中添加头文件时显示无法找到文件的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • C语言超全面讲解函数的使用方法上

    C语言超全面讲解函数的使用方法上

    函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数,由于篇幅过大,分为两篇讲解,下面开始上篇
    2022-04-04
  • C和C++中的基本数据类型的大小及表示范围详解

    C和C++中的基本数据类型的大小及表示范围详解

    这篇文章主要介绍了C和C++中的基本数据类型的大小及表示范围详解,基本数据类型有int、long、long long、float、double、char、string,正文有详细介绍,欢迎参考
    2018-01-01
  • C语言中各种操作符的详细介绍(纯干货!)

    C语言中各种操作符的详细介绍(纯干货!)

    指令系统的每一条指令都有一个操作符,它表示该指令应进行什么样性质的操作,不同的指令用操作符这个字段的不同编码来表示,每个编码代表一种指令,这篇文章主要给大家介绍了关于C语言中操作符的相关资料,需要的朋友可以参考下
    2021-06-06
  • C++模板全方位深入解读

    C++模板全方位深入解读

    人们需要编写多个形式和功能都相似的函数,因此有了函数模板来减少重复劳动;人们也需要编写多个形式和功能都相似的类,于是 C++ 引人了类模板的概念,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动
    2022-06-06

最新评论