【问题标题】:Return 2d array and pass it as argument to another function返回二维数组并将其作为参数传递给另一个函数
【发布时间】:2021-02-08 02:35:10
【问题描述】:

我是C新手,想问一个关于C中函数使用的问题。

我需要创建两个函数,第一个创建二维数组,第二个打印它。 我使用了一个名为 matrices.c 的文件、一个名为 matrices.h 的头文件和一个主文件。

主文件如下:

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

int main() {
int m, n;
printf("Insert rows and colums of matrix A: ");
scanf("%d%d", &m,&n);
printf("Insert elements of the first matrix A\n");
int A[m][n];
A[m][n] = **create(m, n);
display(m, n, A[m][n]);

return 0;
}

matrices.c 文件是:

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

int **create(int m, int n){
    int  **A = (int **) malloc (sizeof(int *)*m);
    for (int i = 0; i < m; i++){
        A[i]=(int *)malloc(sizeof(int)*n);
        for (int j = 0; j < n; j++){
            printf("Element ");printf("%d", i+1);printf("%d", j+1);printf(":");
            scanf("%d",&A[i][j]);
        }
    }
    return A;
}


void display(int m, int n, int A[m][n]){
    for (size_t i = 0; i < m; i++){
        for (size_t j = 0; j < n; j++){
            printf("%d ", A[i][j]);
        }
        printf("\n");
    }
}

最后的matrices.h文件如下:

#ifndef matrices_h
#define matrices_h
#include <stdio.h>

int **create(int m, int n);
void display(int m, int n, int A[m][n]);

#endif

我的编译器返回的错误与该行有关

display(m, n, A[m][n]);

在主文件中。它说:线程 1:EXC_BAD_ACCESS(代码=1,地址=0x7ffe0000001a)。 此外,我还有一个警告: 将'int'传递给'int(*)[*]'类型的参数的整数到指针转换不兼容 (在同一行)。

感谢所有愿意帮助我的人:)

【问题讨论】:

    标签: arrays c xcode matrix 2d


    【解决方案1】:

    您没有分配二维数组。您创建的是一个一维指针数组,然后您将每个指针指向一个一维 int 数组。因此,您必须更改代码以完全使用“双整数指针”类型。

    喜欢:

    int A[m][n];              --> int **A;
    A[m][n] = **create(m, n); --> A = create(m, n);
    display(m, n, A[m][n]);   --> display(m, n, A);
    

    void display(int m, int n, int A[m][n]){ --> void display(int m, int n, int** A){
    

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 2012-01-22
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2015-08-23
      • 2015-06-04
      • 2021-09-28
      • 1970-01-01
      相关资源
      最近更新 更多