265 17 C:\Users\86173\Desktop\chaoaji3.cpp [Error] invalid conversion from 'int*' to 'int' [-fpermissive]
时间: 2024-05-30 08:08:04 浏览: 100
这个错误通常是因为你在代码中把指针类型的变量当成了非指针类型来使用。在 C++ 中,指针类型的变量存储的是内存地址,而非指针类型的变量存储的是具体的数值。因此,当你把指针类型的变量当成非指针类型来使用时,就会导致类型不匹配的错误。
如何解决这个问题呢?首先,你需要检查代码中是否存在把指针类型的变量当成非指针类型来使用的情况。如果存在这种情况,则需要修改代码,把指针类型的变量改为非指针类型的变量。
另外,你需要注意一点,即在 C++ 中,指针类型的变量在初始化时需要使用地址符(&)来获取变量的地址。如果你在初始化指针类型的变量时没有使用地址符,就会导致编译错误。
相关问题
47 63 C:\Users\86176\Desktop\111.cpp [Error] invalid conversion from 'void*' to 'int*' [-fpermissive]是什么原因
这个错误是因为您正在尝试将一个 void 指针转换为 int 指针,但是这种转换是不允许的。void 指针可以指向任何类型的数据,但是它不能进行任何操作,因为它不知道指向的数据类型。如果您想将 void 指针转换为 int 指针,您需要使用显式类型转换。但是在进行这种类型转换时需要非常小心,因为它可能会导致程序运行时错误。
19 48 C:\Users\Administrator\Desktop\exp-2.cpp [Error] invalid conversion from 'const int*' to 'int*' [-fpermissive]此代码出现以下错误,如何修改
您提供的代码片段似乎是在C++中遇到了类型转换错误,特别是在某个指针类型的转换上。错误信息指出`invalid conversion from 'const int*' to 'int*'`,这意味着试图将常量整型指针(`const int*`)转换成普通整型指针(`int*`),这是不允许的,因为在C++中,常量指针通常表示不允许修改指向的内存地址。
为了修复这个问题,您需要根据情况做出以下调整:
1. **如果确实不需要修改指针内容**:您可以直接将`const int*`传递给接受`int*`的函数,不需要转换,只要不通过它改变指向的内容即可。例如,如果你只是想传给一个读取数据的函数,可以这样做:
```cpp
void readData(const int* array, int size) {
// ...
}
int main() {
const int arr[] = {19, 48};
int size = sizeof(arr) / sizeof(arr[0]);
readData(arr, size);
return 0;
}
```
2. **如果需要修改指针所指向的内容**:则需要去掉`const`前缀,但这意味着允许对原始数组进行修改,这取决于您的实际需求。如果不行,可以在函数声明中增加`const`限制其只读:
```cpp
void writeData(const int* array, int size); // 原始函数保持不变
int main() {
int arr[] = {19, 48}; // 创建非const数组
int size = sizeof(arr) / sizeof(arr[0]);
writeData(&arr[0], size); // 使用&操作符获取可修改的指针
return 0;
}
```
注意:在这种情况下,`writeData`函数内部不能修改`array`中的值。
请根据你的上下文检查是否有需要修改指针权限的地方,并相应地修改代码。如果还有疑问,提供更多信息以便给出更精确的帮助。
阅读全文