错误:数组下标的类型'int [int]'无效 if((friendsOnPhoto [j] [1]> tempH)&&(& friendsOnPhoto [j] [1]!=& friendsAmount [i] [1]))
代码是:
#include <iostream>
using namespace std;
int main() {
int friendsAmount;
int i=0, j=0;
int tempW=0;
int tempH=0;
cin>>friendsAmount;
int** friendsOnPhoto = new int* [friendsAmount];
for (i=0;i<2;i++)
*friendsOnPhoto = new int [i];
for (i=0;i<friendsAmount;i++)
{
cin>>friendsOnPhoto[i][0];
tempW += friendsOnPhoto[i][0];
cin>>friendsOnPhoto[i][1];
}
for (int i=0;i<friendsAmount;i++){
for (int j=0;j<friendsAmount;j++){
if((*friendsOnPhoto[j][1]>tempH) && (*friendsOnPhoto[j][1]!=*friendsAmount[i][1]))
tempH = friendsOnPhoto[i][1];
}
}
cout<<(tempW-friendsOnPhoto[i][0])*tempH;
}
答案 0 :(得分:0)
首先,摆脱
中的所有*
if((*friendsOnPhoto[j][1]>tempH) && (*friendsOnPhoto[j][1]!=*friendsAmount[i][1]))
这些不是指针,而是简单的int
元素。
其次,
(*friendsOnPhoto[j][1] != *friendsAmount[i][1])
^^^^^^^^^^^^^^^^^^^^
这是错误的,因为您已将friendsAmount
声明为
int friendsAmount;
因此,您的代码应为:
if((friendsOnPhoto[j][1]>tempH) && (friendsOnPhoto[j][1]!=friendsAmount))
答案 1 :(得分:0)
声明
*friendsOnPhoto = new int [i];
覆盖同一位置friendsOnPhoto[0]
。 int
元素的数量也因环路索引而异,首先分配零元素,然后分配下一个迭代。然后你的循环就结束了。
由于您只初始化friendsOnPhoto[0]
,因此任何其他索引都将使用未初始化的内存并导致undefined behavior。
我相信你一定是这么说的。
for (i=0;i<friendsAmount;i++)
friendsOnPhoto[i] = new int [2];