【发布时间】: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(*)[*]'类型的参数的整数到指针转换不兼容 (在同一行)。
感谢所有愿意帮助我的人:)
【问题讨论】: