在 C 语言中,常量指针(Pointer to Constant)是一种特殊类型的指针,其核心特性是 指向的数据不可修改,但指针本身可以指向其他地址。
常量指针:指向常量的指针,语法为 const type *ptr或 type const *ptr。
* const修饰的是指针指向的数据(*ptr),而非指针本身。
* 不可通过该指针修改指向的值,但指针可以重新指向其他地址。
int main() {
int a = 10;
int b = 20;
const int *ptr = &a; // ptr 是常量指针,指向 a 的值
// *ptr = 30; // 错误:不能通过 ptr 修改 a 的值
ptr = &b; // 合法:ptr 可以指向 b
printf("*ptr: %d\n", *ptr); // 输出 20
return 0;
}
在 C 语言中,指针常量(Constant Pointer)是一种特殊类型的指针,其核心特性是 指针本身的地址不可修改,但可以通过该指针修改所指向的值。
指针常量:指针本身是常量,语法为 type* const ptr。
* const修饰的是指针变量(ptr),而非指向的数据。
* 指针的地址不可变,但可以通过指针修改指向的数据。
int a = 10;
int b = 20;
int* const ptr = &a; // ptr 是指针常量,必须初始化后不可更改
在嵌入式开发中,硬件寄存器的地址通常需要固定指针指向:
#define REG_ADDR 0x40000000
volatile int* const REG_PTR = (int*)REG_ADDR; // 指针常量,指向寄存器地址
*REG_PTR = 0x01; // 直接操作寄存器
* 指针常量的核心是 固定指针的指向,适用于需要确保指针地址不变的场景(如硬件操作、链表节点固定)。
* 语法关键:const必须位于 *右侧,修饰指针变量。
* 与常量指针(const int*)的区别:前者保护指针地址,后者保护数据。
双重 const修饰
若需同时限制指针和数据,可使用 const int* const ptr;

被折叠的 条评论
为什么被折叠?



