C++ 错误 Invalid Conversion of Int* to Int
这个简短的教程将讨论错误消息 Invalid conversation of int* to int
。 首先,让我们回顾一下 C++ 中的指针。
C++ 中的指针预备知识
指针用于保存变量的地址(十六进制值),并使用与号(&
)(也称为变量名前面的地址运算符)将其分配给指针类型变量。
指针使用 *
符号声明,如下所示:
DataType *p;
我们可以使用以下语句将整型变量的地址分配给整型指针:
int* p= &a;
上面这行代码将整型变量a的地址赋给整型指针p。
转换错误
当整型变量被赋予变量的十六进制地址值而不是整数类型值时,会出现“invalid conversion from int to int*”错误。
示例代码:
#include <iostream>
using namespace std;
int main()
{
int a=10;
int p;
p=&a; // invalid conversion error
cout<< p;
}
上面的代码将在第 07 行生成转换错误,因为 p 被分配了一个 int*
类型的地址,该地址无法存储在整数变量中。
输出:
main.cpp: In function 'int main()': main.cpp:7:7: error: invalid conversion from 'int*' to 'int' [-fpermissive] ptr = &p; //invalid conversion. ^
解决转换错误
大多数编译器不允许从指针类型到简单数据类型的类型转换。 因此,可以通过确保将地址类型值分配给正确的指针变量来解决该问题。
示例代码:
#include <iostream>
using namespace std;
int main()
{
int a=10;
int* p;
p=&a;
cout<< p;
}
声明 p 时的 *
符号将使其成为指向整数的指针。 从而使其能够存储整数变量的地址,而不需要任何类型转换。
相关文章
Arduino 复位
发布时间:2024/03/13 浏览次数:315 分类:C++
-
可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。
Arduino 的字符转换为整型
发布时间:2024/03/13 浏览次数:181 分类:C++
-
可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。
Arduino 串口打印多个变量
发布时间:2024/03/13 浏览次数:381 分类:C++
-
可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。