const int **p
时间: 2024-08-15 08:04:37 浏览: 61
`const int **p` 是 C 或 C++ 中的一种指针声明,它表示 `p` 是指向指向整型常量的指针的指针。简单来说,就是 `p` 可以存储另一个指针,这个指针又可以指向一个不可修改的整数变量。
- 当你赋值给 `*p` 时,实际上是改变了 `p` 指向的指针所指向的内存位置的内容。
- 如果你想访问 `p` 所指向的地址中实际的整数值,你需要两次解引用,即 `(*p)`。
- `const` 关键字在此处表示 `p` 本身是一个常量指针,也就是说,它指向的内容不能被改变,但是它的值(即指向的地址)是可以改变的。
相关问题
constint*p,intconst*p和int*constp的含义
- `const int* p`:指向常量整型的指针。指向的整型数值不能被修改,但指针本身可以被修改。
- `int const* p`:也是指向常量整型的指针。指向的整型数值不能被修改,但指针本身可以被修改。这种写法虽然和第一种写法不同,但是它们的含义是相同的。
- `int* const p`:指向整型的常量指针。指针本身的值不能被修改,即指针指向的地址不能被修改,但指针所指向的整型数值可以被修改。
综上所述,`const int* p`和`int const* p`都是指向常量整型的指针,只是语法上略有不同;而`int* const p`则是指向整型的常量指针,指针本身的值不能被修改,但指向的整型数值可以被修改。
int comp(const void *a,const void *b) { const int *p=a; const int *q=b; return *p - *q; } 改正这段代码的[Error] invalid conversion from 'const void*' to 'const int*' [-fpermissive]错误
将原代码中的 `const int *p=a;` 和 `const int *q=b;` 改为 `const int *p=static_cast<const int*>(a);` 和 `const int *q=static_cast<const int*>(b);` 即可解决这个错误。修改后的代码如下:
```
int comp(const void *a,const void *b) {
const int *p=static_cast<const int*>(a);
const int *q=static_cast<const int*>(b);
return *p - *q;
}
```
这里使用静态转换 (static_cast) 将 `void*` 类型的指针转换为 `const int*` 类型的指针,以消除编译器对指针类型转换的警告和错误。
阅读全文