做的网站上传到服务器吗,软文推广营销平台,做网站有用没,seo外链建设const (常量) 关键字在 C 中用于修饰指针时#xff0c;有多种不同的用法#xff0c;它们决定了是指针本身不可变#xff0c;还是指针指向的数据不可变#xff0c;或者两者都不可变。理解这些区别对于编写安全、可维护的 C 代码至关重要#xff0c;尤其对于您AI分布式推理框…const (常量) 关键字在 C 中用于修饰指针时有多种不同的用法它们决定了是指针本身不可变还是指针指向的数据不可变或者两者都不可变。理解这些区别对于编写安全、可维护的 C 代码至关重要尤其对于您AI分布式推理框架的研究方向涉及到内存管理和数据一致性时const的正确使用显得尤为重要。
我们可以将 const 修饰指针的用法分为以下三类
1. 指向常量的指针 (Pointer to const)
英文 Pointer to const 中文意思 指针指向的值是常量不能通过该指针修改其指向的值。
语法 const type* pointer_name; 或者 type const* pointer_name; (这种写法与前一种等价但有时被认为是East const风格更易理解为const修饰的是*pointer_name即指针指向的值。)
解释
const 关键字位于 * 的左边。这意味着你不能通过这个指针来修改它所指向的数据。然而指针本身的值即它指向的内存地址是可以改变的你可以让它指向另一个变量。
示例
int value 10;
const int* ptr_to_const value; // 指向常量的指针// *ptr_to_const 20; // 错误不能通过此指针修改指向的值
ptr_to_const another_value; // 正确指针可以指向另一个地址应用场景 当你希望函数接收一个指针作为参数并且保证函数内部不会修改该指针所指向的数据时这种用法非常常见。例如一个读取数据的函数。
2. 常量指针 (const Pointer)
英文 const Pointer 中文意思 指针本身是常量一旦初始化后不能再改变它指向的内存地址。
语法 type* const pointer_name initial_address;
解释
const 关键字位于 * 的右边。这意味着指针一旦被初始化指向某个地址就不能再指向其他地址。然而通过这个常量指针你可以修改它所指向的数据如果数据本身不是常量。
示例
int value 10;
int* const const_ptr value; // 常量指针必须在声明时初始化*const_ptr 20; // 正确可以通过此指针修改指向的值
// const_ptr another_value; // 错误不能改变指针指向的地址应用场景 当你希望指针始终指向同一个对象并且不希望它被意外地重新赋值指向其他地方时。例如一个内部数据结构的固定入口点。
3. 指向常量的常量指针 (const Pointer to const)
英文 const Pointer to const 中文意思 指针本身是常量且指针指向的值也是常量。
语法 const type* const pointer_name initial_address; 或者 type const* const pointer_name initial_address;
解释
const 关键字在 * 的两边都有。这意味着你既不能通过这个指针修改它所指向的数据也不能改变指针本身所指向的地址。
示例
const int value 10; // 声明一个常量整数
const int* const const_ptr_to_const value; // 指向常量的常量指针// *const_ptr_to_const 20; // 错误不能通过此指针修改指向的值
// const_ptr_to_const another_value; // 错误不能改变指针指向的地址应用场景 当你希望一个指针完全是只读的既不能改变它指向哪里也不能通过它改变所指向的数据。这提供了最高级别的数据保护。
一个简单的记忆技巧是“读法从右到左”Right-to-Left Rule结合 const 的位置
const int* ptr; (或 int const* ptr;)const 在 * 的左边或与类型相邻表示const修饰的是 *ptr (指针指向的值)。指向的数据是常量。int* const ptr;const 在 * 的右边或与 ptr 相邻表示const修饰的是 ptr (指针变量本身)。指针本身是常量。const int* const ptr;两边都有 const表示指针本身和指向的数据都是常量。