gpt4 book ai didi

c - 初学者 C 代码 - 二维数组的问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:49 26 4
gpt4 key购买 nike

我只是想打印这个矩阵,老实说,我不知道为什么我会遇到某些编译器错误。我收到“形式参数不完整”以及 M 和 N 未声明错误。

int print_matrix(int*[][]);

int main()
{
int N = rand() % 10;
int M= rand() % 10;
int matrix[N][M];
int n;
int m;

for (n=0; n<N; n++)
{
for (m=0; m<M; m++)
{
matrix[N][M]= rand()%20 +(-10);
}
}
print_matrix(&matrix);

return 0;
}

int print_matrix(int *matrix[N][M])
{
int m;
int n;

for (n=0; n<N; n++)
{
for (m=0; m<M; m++)
{
printf("%2d", matrix[n][m]);
}
}

return 0;
}

最佳答案

你的代码有一些错误,最重要的是你不需要传递数组的地址,如果你这样做你应该在print_matrix()中正确处理它。功能。

以下代码修复了所有问题

#include <stdlib.h>
#include <stdio.h>

#define SIZE 10
int print_matrix(int N, int M, int matrix[N][M]);

int
main(void)
{
int N = rand() % SIZE;
int M = rand() % SIZE;
int matrix[N][M];
int n;
int m;

for (n = 0 ; n < N ; n++)
{
for (m = 0 ; m < M ; m++)
matrix[n][m]= rand() % 20 + (-10);
}
print_matrix(N, M, matrix);
return 0;
}

int
print_matrix(int N, int M, int matrix[N][M])
{
int m;
int n;
for (n = 0 ; n < N ; n++)
{
for (m = 0 ; m < M ; m++)
printf("%5d ", matrix[n][m]);
fputc('\n', stdout);
}
return 0;
}

我现在解释一下我修复了什么

  1. 将行数和列数传递给print_matrix() .
  2. 您在分配矩阵元素时遇到了另一个错误,您使用了大写字母 NM ,因此您总是访问数组中最后一个元素之后的元素。
  3. 删除 &*分别从函数调用和它的定义中,当数组是函数的参数时,数组会自动转换为指针,请尝试 sizeof(matrix)您可以验证它与 sizeof(void *) 相同.

你可以这样做

int
print_matrix(int N, int M, int matrix[N][M])

因为你也可以做到这一点

int N = rand() % SIZE;
int M = rand() % SIZE;
int matrix[N][M];

反之亦然。

关于c - 初学者 C 代码 - 二维数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com