const int *与int const * 去区别
时间: 2023-09-19 07:06:48 浏览: 106
`const int *` 和 `int const *` 都是指向 `int` 类型的常量指针,它们的唯一区别在于指针所指向的值是否可以修改。
`const int *` 表示指针所指向的值是常量,指针本身可以修改,即可以指向其他的 `const int` 值,但是不能通过该指针修改所指向的值。
`int const *` 同样表示指针所指向的值是常量,指针本身也是常量,即不能通过该指针修改所指向的值,也不能修改指针本身。
相关问题
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*` 类型的指针,以消除编译器对指针类型转换的警告和错误。
int* const test与const int* test区别
`int* const test` 和 `const int* test` 都是指针类型,但它们的含义不同。
`int* const test` 表示 `test` 是一个指向 `int` 类型的常量指针,即指针本身是常量,不能再指向其他地址,但可以通过指针修改所指向地址中的值。
而 `const int* test` 表示 `test` 是一个指向 `const int` 类型的指针,即指针指向的地址中的值是常量,不能通过指针修改所指向地址中的值,但可以通过其他方式修改所指向地址中的值。
阅读全文