gpt4 book ai didi

C - 调用函数并给出二维数组

转载 作者:行者123 更新时间:2023-11-30 20:31:36 24 4
gpt4 key购买 nike

我们学校的教授给了我们一个“简单”的 C 语言编程任务。

我们应该创建一个二维数组,用随机数填充它并将其交给另一个函数。该函数应该给出二维数组。

问题是:我如何交出二维数组?

我在调用该函数时也遇到了问题。我包含了 .h 文件,但它总是给出错误。

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

#define W1 10
#define W2 10
int main(void) {
int a,b;
int array[W1][W2];
for(a = 0; a < W1; ++a)
{
for(b=0; b<W2; ++b)
{
array[a][b] = rand() %10;
}
}
ShowMatrix(array[][W2], W1, W2);

return EXIT_SUCCESS;
}

我要调用的函数:

void ShowMatrix(int array[][10], int W1, int W2)
{
int a,b;
for(a = 0; a < W1; ++a)
{
for(b=0; b<W2; ++b)
{
printf("Inhalt von Array[%d][%d] ",a,b);
printf("ist: %d \n", array[a][b]);
}
}
}

函数的 header 部分:

#ifndef SHOWMATRIX_H_
#define SHOWMATRIX_H_

void ShowMatrix(int array[][], int W1, int W2);

#endif /* SHOWMATRIX_H_ */

最佳答案

包含int array[][]的原型(prototype)是不完整类型。这不会编译。如果由于某种原因您必须在 header 中包含不完整的类型(我不知道您为什么需要这个),那么您必须将数组声明为 array[][*] 。这将使代码编译,但它仍然是无意义的。

声明函数的正确方法是这样的:

void ShowMatrix(int W1, int W2, int array[W1][W2]);

然后您可以将该函数调用为

ShowMatrix(W1, W2, array);

但这要求您使用标准 C 编译器。从您的编码风格来看,您似乎正在被教导使用 30 年前且过时的 C 版本,因此这可能不适合您。

你应该问你的老师为什么他们教你 1989 年而不是 2018 年的编程知识。

关于C - 调用函数并给出二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50016805/

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