解释指针常量和常量指针
时间: 2023-06-02 10:02:49 浏览: 69
指针常量是指指针变量的值不能被修改,但是指针所指向的内容可以被修改。例如:
```
const int* p; // p是一个指针常量,指向的内容是常量
int a = 5;
p = &a; // 合法,p的值可以改变
*a = 6; // 非法,p指向的内容是常量,不能被修改
```
常量指针是指指针变量所指向的内容不能被修改,但是指针变量的值可以被修改。例如:
```
int* const p; // p是一个常量指针,指向的内容是变量
int a = 5;
p = &a; // 非法,p的值是常量,不能被修改
*p = 6; // 合法,p指向的内容是变量,可以被修改
```
相关问题
指针常量和常量指针
指针常量和常量指针都是指针类型的限定符,它们的含义如下:
指针常量:指针常量是一个指针,它的值不能被修改,但是指向的对象可以被修改。也就是说,指针常量本身是一个常量,但是它所指向的内存空间的值可以被修改。例如:
```c++
int a = 10;
int b = 20;
int * const ptr = &a; // 指针常量,ptr 的值不能被修改,但是它所指向的内存空间的值可以被修改
*ptr = 30; // 合法,修改了 a 的值
// ptr = &b; // 非法,不能修改指针常量的值
```
常量指针:常量指针是一个指针,它所指向的对象的值不能被修改,但是指针的值可以被修改。也就是说,常量指针所指向的内存空间的值是一个常量,但是指针本身的值可以被修改。例如:
```c++
int a = 10;
int b = 20;
const int* ptr = &a; // 常量指针,ptr 所指向的内存空间的值不能被修改,但是它的值可以被修改
// *ptr = 30; // 非法,不能修改常量指针所指向的内存空间的值
ptr = &b; // 合法,可以修改常量指针的值
```
需要注意的是,指针常量和常量指针的区别在于它们所修饰的部分不同,一个是指针本身是常量,一个是指向的内存空间是常量。需要根据具体情况选择使用哪种类型的指针。
指针常量和常量指针的区别
指针常量和常量指针的区别在于指针本身的可变性。
指针常量是指指针本身是一个常量,指向的值可以改变。例如:
```
const int* p; // 常量指针,指向的值不能改变
int* const p; // 指针常量,指针本身不能改变,但指向的值可以改变
const int* const p; // 指向的值和指针本身都不能改变
```
常量指针是指指针指向的值是一个常量,指针本身可以改变。例如:
```
int a = 10;
int b = 20;
const int* p = &a; // 常量指针,指向的值不能改变
p = &b; // 合法,指针本身可以改变
*p = 30; // 不合法,指向的值不能改变
```
总的来说,指针常量和常量指针的区别在于指针本身的可变性,指针常量的指针本身是常量,而常量指针的指向的值是常量。