我是c的新手。我正在写一个专用于矩阵的.h文件。我想在.h文件中编写一个返回矩阵(数组)的函数(在c中不可能),因此真正的返回值是指向局部数组变量的指针。但是我不能在主函数中使用局部指针,因此我将int matrix [] []更改为静态int matrix [] []。现在的问题是:用户插入行/列的数量N,但是静态数组只能采用恒定的尺寸。帮助
这是.h
int N;
int i;
int j;
int *get_matrix(){
int user_input;
printf("set the dimension NxN of your matrix >> N=");
scanf("%d",&N );
static int temp_matrix[N][N];
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("insert the matrix[%d][%d] value\n",i,j );
scanf("%d",&user_input);
temp_matrix[i][j]=user_input;
}
}
return temp_matrix;
}
void print_matrix(int *matrix){
for(i=0;i<sizeof(matrix)/4;i++){
for(j=0;j<sizeof(matrix)/4;j++){
printf("%7d",matrix[i][j]);
printf("\n");
}
}
}
这是main.c文件
#include <stdio.h>
#include "matrix_math.h"
void main(void){
int i;
int j;
int *p1 = get_matrix();
int matrix1[N][N];
for(i=0;i<N;i++){
for(j=0;j<N;j++){
matrix1[i][j]=p[i][j];
}
}
print_matrix(matrix1);
}
答案 0 :(得分:0)
如果这只是学校的作业,并且不允许{/ {1}},并且假设将代码限制为某个合理的上限N是可以接受的,请考虑将矩阵定义为结构
malloc
然后您可以传递“矩阵”。不用说,最好通过#define MAXN 20
struct matrix {
int n ;
int data[MAXN][MAXN] ;
}
// matrix.c
struct matrix get_matrix() { ... ; return m } ;
void print_matrix(struct m *mp) {
for (int i = 0 ; i<mp->n ; i++) {
...
} ;
} ;
来提高性能。如果需要,您还可以使函数返回matrix *
。