C使用const详细(学习笔记)

1、对形参使用const,告诉编译器,该函数不能修改arr指向的数组中的内容。

c 复制代码
int sum(const int * arr,int n);

2、指向const的指针不能用于改变值

3、把const数据或非const数据的地址初始化为只想const的指针或为其赋值时合法的

c 复制代码
//带const的指针,可以改变指向的地址。只是不能通过指针改变量值。
double rates[5]={88.99,100.12,59.45,183.11,340.5};
const double locked[4]={0.08,0.075,0.0725,0.07};
const double * pc=rates;//有效
pc=locked;//有效。
pc=&rates[3];//有效

4、只能把非const数据的地址赋给普通指针。很合理,因为普通指针可以修改变量值,但常量值不允许修改。

c 复制代码
double rates[5]={88.99,100.12,59.45,183.11,340.5};
const double locked[4]={0.08,0.075,0.0725,0.07};
double * pc=rates;//有效
pc=locked;//无效。
pc=&rates[3];//有效

5、不要把常量数组传给形参没有const的函数

c 复制代码
mult_array(double * arr,int n);

const double locked[4]={0.08,0.075,0.0725,0.07};
mult_array(locked,4);//不要这么干。函数可能会修改数组的值,但常量不允许修改。

6、const放在*的后面,可以声明一个不能指向别处的指针。可以通过指针修改变量

c 复制代码
double rates[5]={88.99,100.12,59.45,183.11,340.5};
double * const pc=rates;
pc=&rates[2];//不允许。
*pc=92.99;//有效。

7、const在*的前后使用2次,声明的指针既不能指向别处,又不能修改变量。

c 复制代码
double rates[5]={88.99,100.12,59.45,183.11,340.5};
const double * const pc=rates;
pc=&rates[2];//不允许
*pc=92.99;//不允许
相关推荐
迎風吹頭髮1 小时前
UNIX下C语言编程与实践32-UNIX 僵死进程:成因、危害与检测方法
服务器·c语言·unix
老侯(Old monkey)4 小时前
C语言:将字符串逆序存放
c语言·字符串·函数调用
say_fall7 小时前
精通C语言(2.结构体)(内含彩虹)
c语言·开发语言·windows
running thunderbolt9 小时前
项目---网络通信组件JsonRpc
linux·服务器·c语言·开发语言·网络·c++·性能优化
egoist202310 小时前
[linux仓库]信号快速认识[进程信号·壹]
linux·c语言·信号处理·信号·前后台进程
青草地溪水旁14 小时前
VSCode C/C++ 构建任务配置文件 `tasks.json` 全字段深度解析
c语言·c++·vscode
代码改善世界14 小时前
【C语言操作符终极指南】万字总结:从二进制到表达式求值,全方位解析+避坑指南
c语言
迪丽热爱14 小时前
【练】C程序设计-01程序设计和C语言
c语言·开发语言
无敌最俊朗@1 天前
C/C++ 关键关键字面试指南 (const, static, volatile, explicit)
c语言·开发语言·c++·面试
酷~1 天前
C语言模拟面向对象编程方法之多态
c语言·开发语言