指针常量与常量指针的区别
时间: 2024-05-30 18:14:46 浏览: 50
指针常量和常量指针都是指针类型的限定符,但它们的意义和用法是不同的。指针常量是一个指针,不能改变其指向,但可以通过指针修改指向的值。常量指针是一个常量,不能通过指针修改指向的值,但可以改变指针指向的位置。举个例子,int const *ptr表示ptr是一个指向int类型常量的指针,不能通过ptr修改其指向的值,但可以改变其指向的地址;而int *const ptr表示ptr是一个指向int类型的指针常量,不能改变其指向的地址,但可以通过ptr修改其指向的值。
相关问题
c 指针常量 常量指针 区别
C 语言中有两种不同的指针类型:指针常量和常量指针,它们之间的区别在于指针和指针指向的内容是否可以被修改。
指针常量是一个指针,它指向的地址是固定的,不能被修改,但是指针本身可以被修改。例如,以下代码定义了一个指向整型变量的指针常量 p,它被初始化为指向变量 a 的地址,然后通过 p 修改 a 的值:
```
int a = 10;
int *const p = &a;
*p = 20; // 修改 a 的值为 20
```
常量指针是一个指针,它指向的地址可以被修改,但是指针指向的内容不能被修改。例如,以下代码定义了一个指向整型变量的常量指针 p,它被初始化为指向变量 a 的地址,然后尝试通过 p 修改 a 的值:
```
int a = 10;
const int *p = &a;
*p = 20; // 编译错误,无法修改指针指向的内容
```
总之,指针常量和常量指针的区别在于指针和指针指向的内容是否可以被修改。指针常量指向的地址不能被修改,但是指针本身可以被修改;常量指针指向的地址可以被修改,但是指针指向的内容不能被修改。
指针常量与常量指针
指针常量和常量指针是两个不同的概念。
指针常量是指指针本身是一个常量,不能修改它的值,但是它所指向的对象可以被修改,例如:
```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的值
```
阅读全文