const 修饰函数参数,返回值,函数体,保护数据

xiaoxiao2021-02-27  160

一、const 介绍

1、const 定义

const 修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。

2、const 目的

const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点(后面会讲到 const 与 宏的区别)。

3、const 作用

1)可以定义 const 常量,具有不可变性。例如:

const int Max = 100;  Max++会产生错误。

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

void f(const int i) {....} 编译器就会知道 i 是一个常量,不允许修改。

3)可以避免意义模糊的数字出现,同样可以很方便进行参数的调整和修改。同宏定义一样,可以做到不变则已,一变都变。

(这句话,没搞懂什么意思,希望有知道的大神告知!!)

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

[cpp]  view plain  copy       #include <stdio.h>   void f (const int i)   {       i = 10;  //在函数体内修改了 i ,编译器就会报错。   }      int main (void)   {       f (1);       return 0;   }      输出结果:   错误: 向只读形参‘i’赋值   5)可以节省空间,避免不必要的内存分配。例如:

#define PI 3.14159 //常量宏  const double Pi=3.14159; //此时并未将Pi放入RAM中 double i=Pi; //此时为Pi分配内存,以后不再分配!  double I=PI; //编译期间进行宏替换,分配内存  double j=Pi; //没有内存分配 

double J=PI; //再进行宏替换,又一次分配内存! 

[cpp]  view plain  copy   //test.c     #include <stdio.h>     int main (void)     {         const double Pi;         double i = Pi;         double j = Pi;         return 0;     }     [cpp]  view plain  copy   objdump -d test            080483b4 <main>:      80483b4:   55                      push   
转载请注明原文地址: https://www.6miu.com/read-15420.html

最新回复(0)