我不确定我需要用作malloc的参数来分配table_allocate(int)函数中的空间。我只是想count_table * cTable = malloc(sizeof(count_table *)),但是这并不对size参数做任何事情。我应该为list_node_t分配空间吗?以下是我正在处理的内容。在C中使用malloc为typedef'd类型分配空间
在我给出的这个签名.h文件:
//create a count table struct and allocate space for it //return it as a pointer count_table_t* table_allocate(int);
下面是我应该使用结构:
typedef struct list_node list_node_t; struct list_node { char *key; int value; //the next node in the list list_node_t *next; }; typedef struct count_table count_table_t; struct count_table { int size; //an array of list_node pointers list_node_t **list_array; };
谢谢!
你有不少很好的答案,但还没有人注意到一个重要的观点:`int`是有符号类型,除非你想有负面的大小,你应该使用`size_t`,这是typeof`运算符返回的类型,并传递给`malloc`和好友,并且旨在能够存储编译器允许的任何大小的数组的数组索引。你可能需要`size_t size`而不是`int size`。 – 2010-11-23 05:37:02