首页 > 解决方案 > 编译错误:从“int*”到“int”的无效转换 [-fpermissive]|

问题描述

错误显示在下一行

int sum = arr[i][j] + arr[i][j+1] + arr[j+2] + arr[i+1][j+1] + arr[i+2][j] + arr[i+2][j+1] + arr[i+2][j+2];

我的代码如下,

#include<bits/stdc++.h>
using namespace std;

int main(){

int arr[6][6];

for(int i=0;i<6;i++)
    for(int j=0;j<6;j++) cin>>arr[i][j];

for(int i=0;i<4;i++)
    for(int j=0;j<4;j++)
    {

       int sum = arr[i][j] + arr[i][j+1] + arr[j+2] + arr[i+1][j+1] + arr[i+2][j] + arr[i+2][j+1] + arr[i+2][j+2];
       cout<<sum;
    }

return 0;
}

标签: c++arrays

解决方案


int sum = arr[i][j] + arr[i][j+1] + arr[j+2] + ...
//                                  ^^^^^^^^

您在此处缺少一个维度(在^标记上方),arr[j+2]它是一个整数指针(从技术上讲,它是一个数组,但它在此处衰减为一个整数指针),这是您的编译器在输出时抱怨的invalid conversion from 'int*' to 'int'

根据代码,很难判断另一个维度应该是什么,但它肯定应该是这样的:

arr[i+SOMETHING][j+2]

推荐阅读