C - 在从函数返回双指针之前初始化二维数组内的结构
C - Initializing structs inside a 2D array before returning double pointer from function
我是 C 编程的新手,想专注于学习动态分配。作为我的学习机会,我正在尝试创建一个 returns 二维结构数组双指针的函数。我一直在参考教程,这些教程通常指的是所提到的 here in approach #3.
我可以看到教程分配整数值没问题,但我不确定它如何转换为结构。
到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
const int HEIGHT = 64;
const int WIDTH = 96;
struct Tile
{
char type;
bool armed;
struct Tile* up;
struct Tile* right;
struct Tile* down;
struct Tile* left;
};
struct Tile** createTileMap(unsigned int w, unsigned int h)
{
struct Tile** map = (struct Tile **)malloc(w * sizeof(struct Tile *));
for (int x = 0; x < w; x++)
{
map[x] = (struct Tile *)malloc(h * sizeof(struct Tile));
for (int y = 0; y < h; y++)
{
map[x][y] = (struct Tile){.type = '_', .armed = false, .up = NULL,
.right = NULL, .down = NULL, .left = NULL};
}
}
}
int main(int argc, char* argv[])
{
struct Tile** map = createTileMap(WIDTH, HEIGHT);
for (int x = 0; x < WIDTH; x++)
{
for (int y = 0; y < HEIGHT; y++)
{
printf(" (%d, %d): ", x, y);
printf("%c", map[x][y].type);
}
printf("\n");
}
return 0;
}
这段代码有段错误,我不太清楚为什么。感谢任何帮助。
如EOF所示,我只是忘记了实际return地址。不过幸运的是我的其他代码没问题!
我是 C 编程的新手,想专注于学习动态分配。作为我的学习机会,我正在尝试创建一个 returns 二维结构数组双指针的函数。我一直在参考教程,这些教程通常指的是所提到的 here in approach #3.
我可以看到教程分配整数值没问题,但我不确定它如何转换为结构。
到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
const int HEIGHT = 64;
const int WIDTH = 96;
struct Tile
{
char type;
bool armed;
struct Tile* up;
struct Tile* right;
struct Tile* down;
struct Tile* left;
};
struct Tile** createTileMap(unsigned int w, unsigned int h)
{
struct Tile** map = (struct Tile **)malloc(w * sizeof(struct Tile *));
for (int x = 0; x < w; x++)
{
map[x] = (struct Tile *)malloc(h * sizeof(struct Tile));
for (int y = 0; y < h; y++)
{
map[x][y] = (struct Tile){.type = '_', .armed = false, .up = NULL,
.right = NULL, .down = NULL, .left = NULL};
}
}
}
int main(int argc, char* argv[])
{
struct Tile** map = createTileMap(WIDTH, HEIGHT);
for (int x = 0; x < WIDTH; x++)
{
for (int y = 0; y < HEIGHT; y++)
{
printf(" (%d, %d): ", x, y);
printf("%c", map[x][y].type);
}
printf("\n");
}
return 0;
}
这段代码有段错误,我不太清楚为什么。感谢任何帮助。
如EOF所示,我只是忘记了实际return地址。不过幸运的是我的其他代码没问题!