constint*p,intconst*p和int*constp的含义
时间: 2023-07-23 09:19:51 浏览: 182
- `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*` 类型的指针,以消除编译器对指针类型转换的警告和错误。
const int *p和int const *P
这两个声明是等价的,都是指向常量整型的指针。它们的含义是指针p或P所指向的内存空间的值是不可修改的。但是,指针本身是可以修改的,也就是可以指向其他的内存空间。因此,以下两种写法是等价的:
```
const int *p;
int const *p;
```
需要注意的是,如果想要定义一个指针和指针所指向的内存空间都是常量的话,可以使用如下写法:
```
const int *const p;
int const *const p;
```
这样定义的指针p既不能指向其他的内存空间,也不能修改所指向的内存空间的值。
阅读全文