在 C/C++ 中,const 用于界说常量,防止数据被意外修改。
★ 什么时候必要为指针加上const:
- 包管数据安全:如果函数不必要修改指针指向的数据,用 const 可以防止意外修改,确保数据安全。
void func(const int *ptr){ // 只能读取数据,无法修改 }
- 提升代码可读性:使用 const 明确表现数据不可修改,使代码意图更清晰,便于维护。
- 答应通报常量数据:如果指针参数为 const,可以通报常量或非常量数据,进步了函数的适用性。
const int val = 10; void display(const int *ptr); // 可以传入常量 val 的地点 display(&val);
- 防止指针误用:若希望指针自己不变,可以加 const(如 int *const ptr),制止在函数内部修改指针指向的地点。
★ 假设我们有一个函数,传入的是一个指针 int *ptr,以下是加上 const 的几种差别情况:
1. const int *ptr 或 int const *ptr
- 含义:指针 ptr 所指向的内容是常量,不能通过 ptr 来修改这个内容,但指针 ptr 自己可以指向其他地点。
- 示例:
void func(const int *ptr) { // *ptr = 10; // 错误:不能通过 ptr 修改指向的数据 int x = 20; ptr = &x; // 合法:可以让 ptr 指向差别的地点 }
2. int *const ptr
- 含义:指针 ptr 自己是常量,因此不能指向其他地点,但指向的内容可以修改。
- 示例:
void func(int *const ptr) { *ptr = 10; // 合法:可以通过 ptr 修改指向的数据 int x = 20; // ptr = &x; // 错误:不能更改 ptr 自己指向的地点 }
3. const int *const ptr 或 int const *const ptr
- 含义:指针 ptr 自己和指向的内容都是常量,既不能修改 ptr 所指向的内容,也不能让 ptr 指向其他地点。
- 示例:
void func(const int *const ptr) { // *ptr = 10; // 错误:不能通过 ptr 修改指向的数据 int x = 20; // ptr = &x; // 错误:不能更改 ptr 自己指向的地点 }
总结
- const int *ptr 或 int const *ptr:指针指向的内容是常量,内容不可修改,但指针自己可以指向其他地点。
- int *const ptr:指针自己是常量,指向的内容可以修改,但指针不能指向其他地点。
- const int *const ptr:指针和指向的内容都是常量,既不能修改内容,也不能修改指针的地点。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |