const int *p能等于int类型
时间: 2023-08-16 22:07:21 浏览: 132
是的,const int *p 可以等于 int 类型的指针。在 C/C++ 中,const 修饰符可以放在类型名的任意位置,所以 const int *p 和 int const *p 是等价的,它们都表示指向常量的指针,即指针所指向的值不能被修改。当将 int 类型的指针赋值给 const int * 类型的指针时,编译器会发出警告,但不会报错,因为 const int * 可以接受指向非常量的指针。然而,在使用 const int *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
### 回答1:
const int* p 和 int* const p 是两种不同的指针声明方式。
- const int* p 表示 p 是一个指向 int 类型的常量的指针,即指针所指向的内容不可以被修改,但指针本身可以指向其他内存地址。
- int* const p 表示 p 是一个指向 int 类型的指针,但是这个指针本身是常量,不能再指向其他内存地址,但所指向的内容可以被修改。
### 回答2:
const int *p表示p是一个指向const int类型的指针,意味着*p的内容不能被修改,但是可以改变p本身的指向。
int * const p表示p是一个const指针,意味着p的指向不能被修改,但是可以修改*p的内容。
总的来说, const int *p和int * const p都是指向int类型的指针,但是const int *p强调*p的内容不可变,int * const p强调p的指向不可变。
### 回答3:
const int* p 指的是一个指向常量整数的指针。这意味着指针p可以指向任意常量整数,但不能通过指针p来修改所指向的整数的值。例如,p可以指向一个const int类型的常量变量,而不能指向一个普通的int变量。
int* const p 指的是一个指向整数的常量指针。这意味着指针p在初始化之后不能再指向其他变量或内存地址。例如,p可以指向一个普通的int变量,而不能指向一个常量整数。
总结来说,const int* p表示指针p指向的是常量整数,而int* const p表示指针p本身是个常量,无法被修改。
阅读全文