ouch;這裏有一些問題。
extern void *malloc(unsigned int);
不要這樣做;請使用#include <stdlib.h>
,因爲這樣會正確,並且您寫的內容通常不正確(對於malloc()
的參數是size_t
,它不一定是unsigned int
;它可能是unsigned long
或某種其他類型)。
struct Box {
int x, y ,w, h;
};
除了不穩定的空間,struct Box
是確定的。
struct Wall {
char color[15];
struct Box *boxes[20];
};
而struct Wall
也可以。
int main(int argc, const char *argv[])
您沒有使用argc
或argv
,所以你最好使用的備選宣言是:
int main(void)
再次
原始代碼:
{
struct Wall *mywall = malloc(sizeof(struct Wall));
這種分配,但確實不初始化一個struct Wall
。它本身沒什麼問題,但在使用之前應檢查分配是否成功。您還需要擔心分配數組元素將指向的struct Box
項。
struct Box *myboxes[] = mywall->boxes;
你在這裏有一個小小的災難。你不能像這樣複製數組。你還沒有檢查你有沒有數組。忽略錯誤檢查,你被卡住之一:
struct Box *myboxes[] = { &mywall->boxes[0], &mywall->boxes[1], ... };
或:
struct Box **myboxes = &mywall->boxes;
我不相信你會希望第二個版本,它所有的短。
return 0;
我喜歡看return 0;
在main()
末,即使C99可以讓你忽略它。
}
無法複製或C.(不過,你可以用它們成一個結構,它可以* *分配。) – 2012-03-14 19:02:20
爲什麼不'#包括'而不是'的extern無效* malloc的分配陣列(unsigned int); '? –
glglgl
2012-03-14 19:03:28
@glglgl沒有特別的理由。我寫了這段代碼只是爲了證明我的觀點。我忘記了malloc在哪裏,並且懶得找它。 – yasar 2012-03-14 19:06:07