const是C语言中一个十分重要的修饰 我总结了它的含义使用以及作用如下

1.修饰的数据类型是常类型,常类型的变量或对象的值不能被改变

const int i=10;

int a[i];等价于int a[10];

2.便于进行类型检查,使编译对处理内容有更多的了解,消除了一些隐患。

3.方便的进行参数的调整和修改(类似于宏定义)

4.可以保护被修饰的东西,防止被意外修改,增强程序的健壮性。

5.可以节省空间,避免不必要的内存分配(与宏定义的本质区别)

#define的作用是给出立即数,每次调用时需要进行内存分配,会有若干份拷贝

const定义常量从汇编角度来看,只是得出了对应的内存地址,所以,const定义的常量在程序运行过程中只有一份拷贝。

6.提高了效率。

编译器通常不为普通const常量分配储存空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了储存和读内存的操作,使得它效率也很高。

//数组名是一个const指针(int a[]等价于int *const a)

所以说不能a[]=b[]

7.const与指针

int * const p=&i; //p是const常量,不能再修改

*q=26;//OK

q++;//ERROR

const int* p=&i;//不能通过这个指针修改那个变量

*p=26;//ERROR (*p)是const常量

i=26;//OK

p=&j;//OK

int const* p=&i;(等价于const int* p=&i;)

注意:只有两种含义地址p不能修改或不能通过地址p修改

判断方法,第一种const在*后,第二种const在*前

8.转换

可以把一个非const得值转换为const的

void f(const int* x);

int a=15;

f(&a);//OK

当要传递的参数类型比地址大的时候,这是常用的手段:既能用比较少的字节数传递给参数,又能避免函数对外面的变量的修改。

这是传递结构体的常用方法

9.保护数组值

函数内部可以修改数组的值,为了保护数组不被函数破坏,可以设置参数为const

int(const int a[],int len);

C语言禁止使用const,c语言中关于const的使用相关推荐

  1. c语言常量的正确表示const,C语言中的const和free用法详解

    注意:C语言中的const和C++中的const是有区别的,而且在使用VS编译测试的时候.如果是C的话,请一定要建立一个后缀为C的文件,不要是CPP的文件.因为,两个编译器会有差别的. 一.C语言中的 ...

  2. const char *p;和char * const p的区别

    const char *p;       const修饰*p,所以*p是一个常量,不可修改. char* const p; const修饰p,所以指针p是一个常量,不可修改. #include< ...

  3. C语言返回值是const类型,C++中const用法总结

    1.1.1. 定义普通常量 使用#define来定义常量也是常用方法,但const也可以用来定义常量,在[Effective C++]中建议使用const代替#define来定义常量,因为const定 ...

  4. 2020-09-21C++学习笔记之与C语言区别和加强——四种const意义(const int a; int const b; const int *c; int * const d)

    2020-09-21C++学习笔记(const int a; int const b; const int *c; int * const d) 这两天在上课更新晚了. 1.C/C++中的const ...

  5. 【C 语言】const 关键字用法 ( 常量指针 - const 在 * 左边 - 修饰数据类型 - 内存不变 | 指针常量 - const 在 * 右边 - 修饰变量 - 指针不变 )

    文章目录 一.const 普通用法 二.常量指针 ( 指向 常量 的指针 | 被指向的内存不能被修改 ) 三.指针常量 ( 指针不能被修改 ) 三.指向 常量 的 指针常量 四.const 在 * 左 ...

  6. c语言分隔符分离出str字符串中的数字,C语言版Tokenize()函数,由分隔符获取字符串...

    测试环境: 操作系统: Windows10 64位 运行环境: Visual Studio 10 函数: /********************************************** ...

  7. c语言复制粘贴源码,c语言函数memccpy()如何复制内存中的内容实例源码介绍

    c语言函数memccpy()如何复制内存中的内容实例源码介绍.引入的头文件:#include memccpy()函数定义:void * memccpy(void *dest, const void * ...

  8. 非递减数列JAVA_C语言实现两个递减数列中寻找某一个数

    本文实例讲述了C语言实现两个递减数列中寻找某一个数的方法,分享给大家供大家参考之用.具体方法如下: 通常来说这道题算二分查找法中非常有难度的一题了. 题目如下: 一个数组是由一个递减数列左移若干位形成 ...

  9. char* 赋值 const char* 释放_嵌入式Linux开发《C语言专题(十:彻底搞懂“关键字”const)》...

    C语言中的关键字总共有32个:auto break case char const continue default do double else enum extern float for goto ...

最新文章

  1. Udacity机器人软件工程师课程笔记(三十二) - 卡尔曼滤波器 - 一维卡尔曼滤波器 - 多维卡尔曼滤波器 - 拓展卡尔曼滤波器(EKF)
  2. 国内外NLP领域学术界和工业界的牛人和团队
  3. Linux下ps -ef和ps aux的区别
  4. boost::fusion::result_of::as_vector用法的测试程序
  5. Spring Boot文档阅读比较-@SpringBootApplication Auto Configuration
  6. python call agilent com_python 控制Asterisk AMI接口外呼电话的例子
  7. sqlserver安装目录_SQL 2008R2安装教程
  8. PyTorch读取目标检测数据集
  9. ubuntu16.04系统下配置caffe的GPU环境,训练mobileNet-SSD并在EAIDK-310嵌入式上推理
  10. Spring源码解析之AOP篇(一)----代理模式详解
  11. 4007: [JLOI2015]战争调度
  12. matlab解方java_如何在MATLAB中获得该方程的所有解?
  13. 微信Tinker 热修复介绍及接入(一)
  14. Python(28)---模块和包的基本概念
  15. 应用网易轻舟,德邦快递核心系统入选云原生应用十大优秀案例
  16. 13商软 团队博客 列表
  17. 05.抽象队列同步器AQS应用之Lock详解
  18. Oracle MySQL Hive sql进行相邻数据相减、相加等运算 lad lead 窗口函数 偏移函数
  19. Primary Arithmetic
  20. caffe Segnet 语义分割(一)

热门文章

  1. python中PIL安装教程
  2. 头歌平台---字符串处理
  3. Unity 多张图片 合并雪碧图
  4. Redis实现分页查询
  5. 黑洞超级计算机,超级计算机模拟:解开粒子从黑洞中逃脱之谜
  6. JPA中OneToMany
  7. 华为OD机试题,用 Java 解【最小施肥机能效】问题
  8. Vue(二)vue 指令及用法举例
  9. 开源项目-esp32—S3+lvgl智能手表
  10. 基于数字孪生,广州华锐互动构建智慧城市数字化三维实景建模平台