【发布时间】:2014-12-19 19:47:57
【问题描述】:
如何制作结构矩阵或结构指针矩阵?矩阵a 中的元素应该是Area 类型的结构。
这是我迄今为止尝试过的:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct {
char type_toy[20];
int nr;
char town[20];
char direction;
} Area;
void AllocMatrix(int N, int M, Area** a) {
int i;
a = malloc(N * sizeof(Area *));
for (i = 0; i < N; i++) {
a[i] = calloc(M, sizeof(Area*));
}
}
int main() {
int N, M;
Area** a;
printf("N = ..., M = ...");
scanf("%d %d", &N, &M);
AllocMatrix(N, M, a);
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
scanf ("%s", &a[i][j].town);
scanf ("%s", &a[i][j].type_toy);
scanf ("%d", &a[i][j].nr);
scanf ("%s", &a[i][j].direction);
}
}
return 0;
}
【问题讨论】:
-
您需要
a[i] = calloc(M, sizeof(Area));,因为您正在为i-th 行中的M矩阵分配内存 -
很多时候,在 C 中,将矩阵表示为一维数组(可能是某些
struct的最终灵活数组成员)并使用以下命令访问它们是值得的例如一个宏#define matrix_at(m,i,j) m[(i)*width+(j)]