我是 C 的新手,并试图围绕指针、结构和二维数组。每当我学习一门新语言时,我都会尝试用它编写一个小游戏。
我有一个结构——命名Map——它包含一个指向创建二维数组的指针的指针,以及一个名为 的函数createMap(),它应该用 0 或 1 填充数组。
在我的main()函数中,我有一些调试 printf 语句。第一个被解雇了,但第二个没有。我正在使用 gcc 编译器,但没有收到任何错误消息。
我究竟做错了什么?
Map结构和功能createMap():
typedef struct {
int x, y;
int **map;
} Map;
Map createMap(int size, int x, int y) {
Map m;
m.x = x;
m.y = y;
m.map = malloc(x * sizeof(int *));
for (int i=0; i<y; i++) {
m.map[i] = malloc(y * sizeof(int));
}
for (int i=0; i<x*y; i++) {
m.map[i][i] = randomInteger(i, 0, 1, 1);
}
return m;
}
main()功能:
int main() {
printf("Determining map size...");
int size, x, y;
x = 10;
y = 5;
if (x > y) {
size = x;
} else {
size = y;
}
Map map = createMap(size, x, y);
printf("Printing map...");
printMap(map);
for (int i=0; i<size;i++) {
free(map.map[i]);
}
return 0;
}