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;//不允许
相关推荐
ShineWinsu1 小时前
对于数据结构:堆的超详细保姆级解析——下(堆排序以及TOP-K问题)
c语言·数据结构·c++·算法·面试·二叉树·
Nebula_g2 小时前
C语言应用实例:解方程(二分查找)
c语言·开发语言·学习·算法·二分查找·基础
散峰而望2 小时前
C语言刷题-编程(一)(基础)
c语言·开发语言·编辑器
异步的告白4 小时前
C语言-数据结构-1-动态数组
c语言·数据结构·c++
奔跑吧邓邓子5 小时前
【C语言实战(78)】C语言进阶:筑牢数据安全防线,密码学实战探秘
c语言·密码学·数据安全·开发实战
Herbert_hwt5 小时前
C语言循环结构完全指南:掌握for、while、do-while循环及实战应用
c语言
奔跑吧邓邓子5 小时前
【C语言实战(79)】深入C语言单元测试:基于CUnit框架的实战指南
c语言·单元测试·实战·cunit
Shylock_Mister6 小时前
弱函数:嵌入式回调的最佳实践
c语言·单片机·嵌入式硬件·物联网
攒钱植发6 小时前
嵌入式Linux——“大扳手”与“小螺丝”:为什么不该用信号量(Semaphore)去模拟“完成量”(Completion)
linux·服务器·c语言
三品吉他手会点灯7 小时前
STM32F103学习笔记-16-RCC(第3节)-使用HSE配置系统时钟并使用MCO输出监控系统时钟
c语言·笔记·stm32·单片机·嵌入式硬件·学习