C++指针赋值报incompatible integer to pointer conversion错误如何解决
报错原因
报错触发自代码nbSpace = *nbTrades + *nbGround;行,原因是类型不匹配:
*nbTrades、*nbGround是对指针做解引用操作,拿到的是两个int类型的数值31和24,相加结果仍为int类型的55- 左侧的
nbSpace是int*类型的指针变量,C++不允许直接把int数值赋值给指针变量,因此抛出整数转指针不兼容的报错。
正确实现方法
要让nbSpace指向的值为55,需要先为nbSpace分配对应的int类型堆内存,再对其指向的内存空间赋值,正确代码如下:
#include <iostream> using namespace std; int main() { int* nbGround = nullptr; int* nbTrades = nullptr; int* nbSpace = nullptr; nbGround = new int(24); nbTrades = new int(31); // 为nbSpace分配int大小的堆内存 nbSpace = new int; // 解引用后给nbSpace指向的内存赋值 *nbSpace = *nbTrades + *nbGround; cout << "Number of spaces for sale : " << *nbSpace << endl; delete nbSpace; delete nbTrades; delete nbGround; return 0; }
内容的提问来源于stack exchange,提问作者user14324754
相关产品推荐
相关产品推荐

