使用结构的矩阵

时间:2017-06-16 12:57:34

标签: c arrays matrix struct declaration

我有一个矩阵,struct有2个int个变量。

struct virus {
int gen;
int neighbours;
}

我想用gen值初始化我的完整1矩阵。问题是它不适用于矩阵的第一列。 我将发布下面的代码。 此外,当我尝试将我的矩阵设置为virus struct它没有工作时,我必须初始化一个我称为b的新矩阵。 它只是一个简单的初始化和打印。

    #include <stdio.h>

struct virus {
    int gen;
    int neighbours;
    };

void initGen(int n, int a[][100])
{
    struct virus b[n][100];

    int i,j;
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < n; j++)
            {
              b[i][j].gen = 1;
            }
    }
}

void printMatrixGen(int n, int b[][100])
{
    struct virus a[n][100];

    int i;
    for(i = 0; i < n; i++)
    {
        int j;
        for(j = 0; j < n; j++)
            printf("%d\t", a[i][j].gen);
        printf("\n");
    }
}

int main(void)
{
    int a[100][100], n;
    n = 4;
    initGen(n,a);
    printMatrixGen(n,a);
    return 0;
}

输出是矩阵

0    1    1   1
0    1    1   1
0    1    1   1
0    1    1   1

而不是

1    1    1   1
1    1    1   1
1    1    1   1
1    1    1   1

1 个答案:

答案 0 :(得分:2)

您的代码传递了错误的数组。您需要更改功能签名,如下所示:

void initGen(int n, struct virus a[][100]);
void printMatrixGen(int n, struct virus a[][100]);

之后,删除struct virus b数组的本地声明,并使用struct作为参数传递。

最后,在struct中声明您的main数组,并将其传递给两个函数:

struct virus a[100][100];
int n = 4;
initGen(n, a);
printMatrixGen(n, a);