2024年10月22日 09:31

This commit is contained in:
许大仙 2024-10-22 01:31:16 +00:00
parent 0f37dc5dab
commit 9868df316b

View File

@ -2005,7 +2005,7 @@ register 数据类型 变量 = 初始化值;
> [!NOTE] > [!NOTE]
> >
> * ① 由于现在的计算机的速度愈来愈快,性能愈来愈高, 优化的编译系统能够识别使用频繁的变量,从而自动地将这些变量放在寄存器中,而不需要程序设计者指定。 > * ① 由于现在的计算机的速度愈来愈快,性能愈来愈高, 优化的编译系统能够识别使用频繁的变量,从而自动地将这些变量放在寄存器中,而不需要程序设计者指定。
> * ② 因此,现在实际上用 register 声明变量的必要性不大。 > * ② 因此,在实际开发中,使用 register 声明变量的频率已经越来越少了!!!
### 3.3.2 const 修饰变量 ### 3.3.2 const 修饰变量
@ -2018,7 +2018,11 @@ register 数据类型 变量 = 初始化值;
* 如果一个变量使用 const 修饰,就变为常量,语法如下: * 如果一个变量使用 const 修饰,就变为常量,语法如下:
```c ```c
const int MAX_NUM = 100; const int MAX_NUM = 100; // 都可以,但是这种方式
```
```c
int const MAX_NUM = 100; // 都可以,但是建议上面的方式
``` ```
* 常量一旦被创建后其值就不能再改变,必须在定义的同时赋值(初始化),后面的任何赋值行为都将引发错误。 * 常量一旦被创建后其值就不能再改变,必须在定义的同时赋值(初始化),后面的任何赋值行为都将引发错误。
@ -2053,15 +2057,21 @@ int main() {
* const 也可以和指针变量一起使用这样可以限制指针变量本身也可以限制指针指向的数据。const 和指针一起使用会有几种不同的顺序,如下所示: * const 也可以和指针变量一起使用这样可以限制指针变量本身也可以限制指针指向的数据。const 和指针一起使用会有几种不同的顺序,如下所示:
```c ```c
const int *p1; // 指针常量:指向常量的指针
// 表示该指针所指向的对象的值不能通过指针修改,但指针本身可以指向其他地址。
const int *p1; // 不能通过该指针去修改指向对象的值。
``` ```
```c ```c
int const *p2; // 指针常量:指向常量的指针
// 表示该指针所指向的对象的值不能通过指针修改,但指针本身可以指向其他地址。
int const *p2; // 不能通过该指针去修改指向对象的值。
``` ```
```c ```c
int * const p3; // 常量指针,常量指针意味着指针本身是常量,不能指向其他地址,
// 但指针所指向的对象的值可以修改。
int* const p3; // 指针的值(即指向的地址)不能改变,但可以通过该指针修改指向对象的值
``` ```
> [!IMPORTANT] > [!IMPORTANT]
@ -2142,7 +2152,7 @@ int main() {
``` ```
#### 3.3.2.4 常量参数 #### 3.3.2.4 指针常量参数
* 在C语言中单独定义 const 变量没有明显的优势,完全可以使用`#define`命令代替。 * 在C语言中单独定义 const 变量没有明显的优势,完全可以使用`#define`命令代替。
@ -2281,5 +2291,5 @@ int main() {
> [!CAUTION] > [!CAUTION]
> >
> * ① 正因为 C 语言的这种“坑爹”的语法,很多程序员会将 const 修饰的变量const 常量,称为只读变量。 > * ① 正因为 C 语言的这种“坑爹”的语法,很多程序员会将 const 修饰的变量const 常量,称为只读变量。
> * ② 但是,对于 C 语言的程序员而已,可以使用指针、函数来动态修改 const 修饰的变量const 常量)的值。 > * ② 但是,对于使用 C 语言的程序员而已,可以使用指针、函数来动态修改 const 修饰的变量const 常量)的值。