常量指针和指针常量的理解
时间: 2024-12-23 22:23:45 浏览: 3
常量指针(Constant Pointer)和指针常量(Pointer to Constant)在 C 语言中都涉及到指针变量的性质不同。让我们分别来看一下:
**常量指针**:
常量指针是指针变量被声明为指向某个数据类型的常量地址。一旦指针初始化为一个特定的内存地址,就不能再修改该地址。例如:
```c
const int *ptr; // 声明一个指向整型常量的指针
ptr = &constant_value; // 指向一个已知的常量整数值
```
在这个例子中,`ptr` 只能指向一个 `int` 类型的常量,不能改变所指位置。
**指针常量**:
指针常量(也称为常量指针或常量地址)则是指指针本身的值是一个常量,通常用 `const` 关键字修饰。这意味着指针本身不可更改,但可以通过指针访问的数据可以被修改。例如:
```c
const int value = 10;
int (*const ptr)(int) = &add; // 声明一个指向函数的指针常量
(*ptr)(5); // 能调用 add 函数,但不能改变 ptr 的指向
```
这里 `ptr` 是一个指向 `int` 函数的指针,`*ptr` 表示调用函数,即使 `ptr` 不变,其内部的函数地址也可以是可变的。
总结来说:
- 常量指针指向的是常量地址,指针本身不随地址变化;
- 指针常量则是指针变量的值不可变,但指向的内容可能不是常量。
阅读全文