const *p 和 const p* 有什么区别
时间: 2023-09-02 15:12:11 浏览: 54
`const *p` 和 `const p*` 都是指向常量的指针。它们的区别在于指针本身是否是常量。
`const *p` 表示 `p` 是一个指向常量的指针,指针指向的值不能被修改,但是指针本身可以被修改。例如:
```c++
int x = 10;
const int *p = &x; // p 是一个指向常量的指针,指向的值不能被修改
*p = 20; // 错误,指向的值不能被修改
p = nullptr; // 正确,指针本身可以被修改
```
`const p*` 表示 `p` 是一个常量指针,指针本身不能被修改,但是指针指向的值可以被修改。例如:
```c++
int x = 10;
int y = 20;
int *const p = &x; // p 是一个常量指针,指针本身不能被修改
*p = 30; // 正确,指向的值可以被修改
p = &y; // 错误,指针本身不能被修改
```
因此,`const *p` 和 `const p*` 的区别在于,前者可以修改指针本身但不能修改指向的值,后者可以修改指向的值但不能修改指针本身。
相关问题
const int *p和int const *p有什么区别
`const int *p` 和 `int const *p` 都是指向常量整型的指针,它们的区别在于指针本身的常量性质。
`const int *p` 的意思是指针 `p` 指向的是一个常量整型变量,也就是说通过 `p` 指针是不能修改所指向的变量的值的,但是指针本身是可以修改的,即可以指向其它的常量整型变量。
而 `int const *p` 的意思是指针 `p` 本身是一个指向常量整型变量的指针,也就是说通过 `p` 指针是不能修改所指向的变量的值的,同时指针本身也是不能修改的,即不能指向其它的常量整型变量。
例如:
```
const int a = 10;
const int b = 20;
const int *p1 = &a; // 指针p1指向a常量
p1 = &b; // 正确,p1可以指向其它常量整型变量
int c = 30;
int d = 40;
int const *p2 = &c; // 指针p2指向c常量
p2 = &d; // 正确,p2可以指向其它常量整型变量
```
const char *p , char const *p 和 char *const p有什么区别
const char *p, char const *p和char *const p有以下区别:
1. const char *p和char const *p是一样的,它们都是指向常量字符的指针。这意味着指针p指向的字符是不可修改的,但指针本身是可变的,可以指向其他常量字符。也就是说,我们不能通过指针p来修改它所指向的字符的值,但可以通过p来改变它指向的位置。
2. char *const p是一个常量指针,它指向的字符是可变的,但指针本身是不可变的。这意味着指针p不能指向其他位置,但可以通过指针p来修改所指向字符的值。
3. const char *const p是一个既指向常量字符又是一个常量指针。它指向的字符是不可修改的,同时指针本身也是不可变的,不能指向其他位置。
总结来说,const char *p和char const *p都是指向常量字符的指针,但指针本身是可变的;而char *const p是一个常量指针,指向的字符是可变的;const char *const p既指向常量字符又是一个常量指针。