const int *p
:
- 含义:这表示指针
p
所指向的int
型数据是常量,即不能通过p
去修改它所指向的值。但是指针p
本身的值(即它所指向的地址)是可以改变的。
- 实际使用限制举例:
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
const int *p = &a;
// *p = 15; // 错误,不能通过p修改它所指向的值
p = &b; // 正确,可以改变指针p指向的地址
return 0;
}
int * const p
:
- 含义:这意味着指针
p
本身是一个常量,一旦初始化后,它所指向的地址就不能再改变。但通过p
所指向的变量的值是可以修改的。
- 实际使用限制举例:
#include <stdio.h>
int main() {
int a = 10;
int * const p = &a;
*p = 15; // 正确,可以修改p所指向的值
// int b = 20;
// p = &b; // 错误,不能改变指针p指向的地址
return 0;
}
const int * const p
:
- 含义:这种写法表示指针
p
本身是常量,同时它所指向的int
型数据也是常量。即既不能改变指针p
所指向的地址,也不能通过p
去修改它所指向的值。
- 实际使用限制举例:
#include <stdio.h>
int main() {
int a = 10;
const int * const p = &a;
// *p = 15; // 错误,不能通过p修改它所指向的值
// int b = 20;
// p = &b; // 错误,不能改变指针p指向的地址
return 0;
}