初始化后还是报错?

Error even after initializing?

#include <iostream>
using namespace std;
float* findAverage(int arr[][1], int rows, float averages[1]);
int main (){
int myArr[1][1];
for (int i = 0; i < 2; i++){
    for (int j = 0; j < 2; j++){
    cin >> myArr[j][i];
    }
}
float* theAverages = {0};
theAverages = findAverage(myArr, 2, theAverages);
return 0;
}

float* findAverage(int arr[][1], int rows, float averages[1]){
    for (int x = 0; x < rows; x++){
        for (int i = 0; i < 2; i++){
            averages[x]+=arr[i][x];
            cout << averages[0] << endl;
        }
    }
    for (int j = 0; j < 2; j++){
    cout << float(averages[j]/2) << endl;
    }
    return 0;
}

^ 以上是我的代码,但它在初始化为 0 后仍然显示一个奇怪的浮点数。我哪里错了?

有几个问题正在发生。

int myArr[1][1];

是一个 1 行 1 列的二维数组,但您将其用作 2 行 2 列的二维数组。您需要将其更改为 int myArr[2][2];。请记住,数组索引从 0 开始,但数组大小从 1 开始。

第二个问题是你从不分配平均值。你应该改变

float* theAverages = {0};

float theAverages[] = {0f, 0f};

你也应该

float* findAverage(int arr[][1], int rows, float averages[1]);

A void 函数,因为您已经将输出放入 averages。所以应该变成

void findAverage(int arr[][2], int rows, float averages[2]);

您还需要删除函数末尾的 return 0;。然后你可以改变

theAverages = findAverage(myArr, 2, theAverages);

findAverage(myArr, 2, theAverages);