初始化后还是报错?
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);
#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);