【C语言】学习笔记6——const

简介: 1. 用const创建变量, 虽然 #define 指令可以创建类似功能的符号常量,但是const的用法更加灵活,可以创建const数组、 const指针和 指向 const的指针 const double PI = 3.14159; 2. 用const关键字保护数组 const int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; days[9] = 44; //不允许,编译错误 3. 指向 const 的指针不能改变值。

1. 用const创建变量, 虽然 #define 指令可以创建类似功能的符号常量,但是const的用法更加灵活,可以创建const数组、 const指针和 指向 const的指针

const double PI = 3.14159

2. 用const关键字保护数组

const int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

days[9] = 44;     //不允许,编译错误

3. 指向 const 的指针不能改变值。指向const的指针通常用于函数形参中,表明该函数不会使用指针改变数据

double rates[5] = {88.99, 100.12, 59.45, 15.22, 54.33};
const double * pd = rates;

*pd = 29.77;              //不允许
pd[2] = 222.22;         //不允许  
rates[0] = 66.66;        //允许,因为rates没有被const 限定

pd++           // 允许,让pd指向 rates[1]

4. 把 const 数据或者 非const 数据的地址初始化为 指向 const指针 或 为其赋值是合法的。 

double rates[5] = {88.99, 100.12, 59.45, 15.22, 54.33};
const double locked[4] = {0.22, 0.55, 0.33, 0.66,};

const double * pc = rates;        //有效
pc = locked;      //有效
pc = &rates[3]    //有效

5.只能把非const数据的地址赋给普通指针, 否则,通过指针就能改变const数组中的数据

double rates[5] = {88.99, 100.12, 59.45, 15.22, 54.33};
const double locked[4] = {0.22, 0.55, 0.33, 0.66,};

double * pnc = rates;      //有效
pnc = locked;          //无效
pnc = &rates[3]       //有效

6.C标准规定,使用非const标识符修改const数据导致的结果是未定义的

7.const可以声明并初始化一个不能指向别处的指针, 关键是const的位置

double rates[5] = {88.99, 100.12, 59.45, 15.22, 54.33};
const double * const pc = rates;

pc = &rates[2];    // 不允许
*pc = 92.99;       //不允许

 

相关文章
|
8月前
|
C语言
C语言学习笔记-数组
C语言学习笔记-数组
|
8月前
|
C语言
C语言学习笔记-C语言中的程序结构语句
C语言学习笔记-C语言中的程序结构语句
|
1月前
|
安全 程序员 编译器
【C语言】const 关键字详解
`const`关键字在C语言中用于定义常量,提供只读的变量。这意味着一旦初始化,`const`变量的值不能再被修改。下面详细介绍`const`关键字的用法、作用以及其在不同上下文中的应用。
46 2
|
3月前
|
C语言
C语言学习笔记-知识点总结上
C语言学习笔记-知识点总结上
102 1
|
7月前
|
C语言
C语言学习笔记之初识字符串
C语言学习笔记之初识字符串
51 5
|
7月前
|
文件存储 C语言
|
7月前
|
存储 机器学习/深度学习 编译器
C语言代码学习笔记
<编程精粹:编写高质量C语言代码> 读书笔记
|
7月前
|
C语言
C语言学习记录——模拟字符串相关函数(strcpy、strlen、strcat)相关知识-const、typedef
C语言学习记录——模拟字符串相关函数(strcpy、strlen、strcat)相关知识-const、typedef
41 1
|
6月前
|
C语言
|
6月前
|
C语言