【问题标题】:Returning Two Dimensional Array from a Function in C [duplicate]从 C 中的函数返回二维数组
【发布时间】:2021-12-04 21:42:11
【问题描述】:

我真的不知道如何从我声明的函数中正确地将二维数组传递给我的主函数。程序需要计算两个 3x3 矩阵的总和,但输入需要通过函数进行。有人可以帮助我吗?我对编码比较陌生,这个程序是用 c 编写的。

#include <stdio.h>
#include <stdlib.h>
int addierer ()
{ 
int i=3,j=3;
int d[i][j];


printf("\n What are the numbers of the matrix? \n");            // Abfrage der Zahlen der  Matrix
for (i = 0; i < 3; ++i){
for (j = 0; j < 3; ++j) {
    printf("Enter number a%d%d : ", i + 1 ,j + 1);
    scanf("%d", &d[i][j]);
}}
    return (d[i][j]);
}
int main() {
   int i=3,j=3;
   int a[i][j], b[i][j], sum[i][j];
    
   a[i][j]  = addierer();
   b[i][j]  = addierer();


for (i = 0; i < 3; ++i)
for (j = 0; j < 3; ++j) {
    sum[i][j] = a[i][j] + b[i][j];
}     
printf("Sum:  \n");                     //  Summe der beiden Matrizen
for (i = 0; i < 3; ++i){
for (j = 0; j < 3; ++j){
    printf("%d  ", sum[i][j]);
    if (j == 3 - 1) {
    printf("\n\n");
    }}}
    
 return 0;
}

【问题讨论】:

  • 您要么必须为函数中的数组分配内存,要么将其传递给预先分配的数组以进行填充。例如void addierer(int m, int n, int d[m][n])。或者void addierer(int d[][3]),因为您已经有效地硬编码了大小。

标签: arrays c function matrix return-value


【解决方案1】:

如果它总是一个 3x3 矩阵。您可以将其打包成一个结构并返回该结构。

【讨论】:

  • 你说得对,但我的教授很遗憾地希望我们用函数来做。
猜你喜欢
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
  • 2014-12-19
  • 2011-07-09
  • 1970-01-01
相关资源
最近更新 更多