常量指针 与 指针常量
时间: 2023-08-08 17:10:47 浏览: 100
常量指针和指针常量是两个不同的概念。
常量指针是指指针指向的内存地址不可修改,但是指针指向的内存中的内容可以被修改。可以使用 `const` 关键字来定义一个常量指针,例如 `const int *p` 表示 `p` 是一个指向 `int` 类型的常量指针。
指针常量是指指针本身是一个常量,指针指向的内存地址可以被修改,但是指针指向的内存中的内容不可修改。可以使用 `const` 关键字来定义一个指针常量,例如 `int * const p` 表示 `p` 是一个指向 `int` 类型的指针常量。
区别在于常量指针是可以修改指针指向的内存中的内容,但是不能修改指针指向的内存地址;而指针常量是可以修改指针指向的内存地址,但是不能修改指针指向的内存中的内容。
相关问题
指针常量与常量指针
指针常量和常量指针是两个不同的概念。
指针常量是指指针本身是一个常量,不能修改它的值,但是它所指向的对象可以被修改,例如:
```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关键字声明的变量。
阅读全文