指针常量与常量指针
时间: 2023-07-20 18:16:59 浏览: 52
指针常量和常量指针是两个不同的概念。
指针常量是指指针本身是一个常量,不能修改它的值,但是它所指向的对象可以被修改,例如:
```c++
int a = 10;
int b = 20;
int* const p = &a; // p是一个指针常量,指向a,不能修改p的值,但可以通过p修改a的值
*p = 30; // 正确:通过p修改a的值
p = &b; // 错误:不能修改p的值
```
常量指针是指指针所指向的对象是一个常量,不能通过指针修改它的值,但是指针本身可以被修改,例如:
```c++
const int a = 10;
const int b = 20;
const int* p = &a; // p是一个常量指针,指向a,不能通过p修改a的值
p = &b; // 正确:可以修改p的值,使其指向b
```
需要注意的是,指向常量的指针和指向常量的常量指针都不能通过指针修改所指向的对象的值,例如:
```c++
const int a = 10;
const int* p1 = &a; // p1是一个指向常量的指针,不能通过p1修改a的值
const int* const p2 = &a; // p2是一个指向常量的常量指针,不能通过p2修改a的值,也不能修改p2的值
```
相关问题
指针常量与常量指针的区别
指针常量和常量指针是两个不同的概念,它们的区别在于指针和常量的位置不同。
指针常量(const pointer)是一个指针,它指向的对象的值可以被修改,但指针本身的值不能被修改。这意味着,指针常量指向的地址是固定的,但是可以通过指针常量来修改其所指向的变量的值。例如:
```
int num = 10;
int *const p = #
*p = 20; // 修改 p 所指向的变量的值
```
在上面的代码中,p 是一个指针常量,它指向的地址是固定的,但是可以通过 p 来修改 num 的值。
常量指针(pointer to const)是一个指针,它指向的对象的值不能被修改,但指针本身的值可以被修改。这意味着,常量指针指向的地址可以被修改,但是不能通过常量指针来修改其所指向的变量的值。例如:
```
const int MAX_NUM = 100;
const int *p = &MAX_NUM;
// *p = 20; // 错误,不能修改 p 所指向的变量的值
```
在上面的代码中,p 是一个常量指针,它指向的地址可以被修改,但是不能通过 p 来修改 MAX_NUM 的值。
总之,指针常量和常量指针是两个不同的概念,它们的区别在于指针和常量的位置不同。指针常量指针的值不能被修改,但是指向的对象的值可以被修改;常量指针指向的对象的值不能被修改,但是指针本身的值可以被修改。
常量指针 与 指针常量
常量指针和指针常量是两个不同的概念。
常量指针是指指针指向的内存地址不可修改,但是指针指向的内存中的内容可以被修改。可以使用 `const` 关键字来定义一个常量指针,例如 `const int *p` 表示 `p` 是一个指向 `int` 类型的常量指针。
指针常量是指指针本身是一个常量,指针指向的内存地址可以被修改,但是指针指向的内存中的内容不可修改。可以使用 `const` 关键字来定义一个指针常量,例如 `int * const p` 表示 `p` 是一个指向 `int` 类型的指针常量。
区别在于常量指针是可以修改指针指向的内存中的内容,但是不能修改指针指向的内存地址;而指针常量是可以修改指针指向的内存地址,但是不能修改指针指向的内存中的内容。