包含多维数组的程序出错

Error with program containing multidimensional array

编写此程序时遇到一些错误。搜索了一段时间,但我找不到有同样问题的人,多维数组。

这个程序的目的很普通。制作一个数组,用随机整数填充它,显示,显示偶数,以奇怪的方式排序。再次显示。

//main.cpp
#include "header.h"
#include <iostream>

using namespace std;

int main()
{
    int arrayInt[fd][sd];
    initializeArray(arrayInt[fd][sd]);
}

//functions.cpp
#include <iostream>
#include "header.h"

using namespace std;

void displayArray(int arrayInt[][sd])
{
    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 6; i++)
        {
            cout << arrayInt[i][j];
        }
        cout << "" << endl;
    }
    system("pause");
}

void initializeArray(int arrayInt[][sd])
{
    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; i < 6; i++)
        {
            arrayInt[i][j] = rand() % 101;
        }
    }
    displayArray(arrayInt[fd][sd]);
    evenArray(arrayInt[fd][sd]);
    sortArray(arrayInt[fd][sd]);
    displayArray(arrayInt[fd][sd]);
}

void sortArray(int arrayInt[][sd])
{
    int temp = 0;
    for (int i = 0; i < 9; i++)
    {
        if (i % 2 == 0)
        for (int j = 0; i < 6; i++)
        {
            while (arrayInt[i][j] > arrayInt[i][j + 1])
            {
                temp = arrayInt[i][j];
                arrayInt[i][j] = arrayInt[i][j + 1];
                arrayInt[i][j + 1] = temp;
            }
            while (arrayInt[i][j] < arrayInt[i][j - 1])
            {
                temp = arrayInt[i][j];
                arrayInt[i][j] = arrayInt[i][j - 1];
                arrayInt[i][j - 1] = temp;
            }
        }
        if (i % 2 == 1)
        for (int j = 0; i < 6; i++)
        {
            while (arrayInt[i][j] < arrayInt[i][j + 1])
            {
                temp = arrayInt[i][j];
                arrayInt[i][j] = arrayInt[i][j + 1];
                arrayInt[i][j + 1] = temp;
            }
            while (arrayInt[i][j] > arrayInt[i][j - 1])
            {
                temp = arrayInt[i][j];
                arrayInt[i][j] = arrayInt[i][j - 1];
                arrayInt[i][j - 1] = temp;
            }
        }
    }
    system("pause");
}

void evenArray(int arrayInt[][sd])
{
    int temp = 0;

    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; i < 6; i++)
        {
            if (arrayInt[i][j] % 2 == 0)
            {
                temp +=1;
                cout << arrayInt[i][j];
            }
        }
        cout << "" << endl;
    }
    system("pause");
}

//header.h
#include <iostream>
#include <string>

using namespace std;

const int fd = 8;
const int sd = 5;

void displayArray(int arrayInt [][sd]);
void initializeArray(int arrayInt [][sd]);
void sortArray(int arrayInt [][sd]);
void evenArray(int arrayInt [][sd]);

错误:

错误 C2664:'void sortArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5]'functions.cpp

错误 C2664:'void initializeArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5]' main.cpp

错误 C2664:'void evenArray(int [][5])':无法将参数 1 从
'int' 到 'int [][5]' functions.cpp
错误 C2664:'void displayArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5]'functions.cpp

错误 C2664:'void displayArray(int [][5])':无法将参数 1 从 'int' 转换为 'int [][5] 'functions.cpp

当您将 array 传递给函数时,您必须仅传递数组名称。 arrayInt[fd][sd] 指的是一个元素。数组索引也从 0 开始。最后一个元素由

访问

arrayInt[fd-1][sd-1].

所以arrayInt[fd][sd]导致溢出

所以改变initializeArray(arrayInt[fd][sd]);

initializeArray(arrayInt);

并更改其他此类调用以便仅传递数组名称

initializeArray(arrayInt[fd][sd]);

没有意义,因为 arrayInt[fd][sd]int 类型;调用函数如下。

initializeArray(arrayInt);