【发布时间】:2013-03-09 17:31:22
【问题描述】:
对于家庭作业,我需要定义一个将内存分配给字符串数组(在结构中)的函数。
给定每个字符串的长度:MAX_WORD_LEN+1 (=10+1)
我必须为len 的字符串数量分配内存,len 在输入中收到。
带有字符串数组定义的结构体(给定):
struct dict{
int len;
char (*dict0)[MAX_WORD_LEN+1];
char (*dict1)[MAX_WORD_LEN+1];
};
我看不懂char (*dict0)[MAX_WORD_LEN+1];的声明
- 函数声明也给出:
void createDict(struct dict* myDict);
这是我写的,但我不确定它是否有效,而且我很难在编译器中检查它。我也是根据这个网站和其他网站的帖子写的,不太明白:
选项 1:
void createDict(struct dict* myDict)
{
myDict->(*dict0) = malloc( (myDict->len)*sizeof(char*));
myDict->(*dict1) = (char**) malloc( (myDict->len)*sizeof(char*));
for(int i=0;i<(myDict->len);i++)
{
(myDict->(*dict0)[i]) = (char*)malloc((MAX_WORD_LEN+1)*sizeof(char));
(myDict->(*dict0)[i]) = (char*)malloc((MAX_WORD_LEN+1)*sizeof(char));
}
}
选项 2:
(myDict->(*dict0)[MAX_WORD_LEN+1]) = malloc((myDict->len) * sizeof(char*));
(myDict->(*dict1)[MAX_WORD_LEN+1]) = malloc((myDict->len) * sizeof(char*));
请给我解释一下……
【问题讨论】:
-
该声明都不正确。单独的编译器应该会告诉你。
-
字符 (*dict0)[MAX_WORD_LEN+1];表示字符指针数组。但似乎您正在尝试存储一个字符数组(AKA 字符串)
-
@Ifthikhan 这不是 MAX_WORD_LEN+1 个字符指针的数组。它是一个指向 MAX_WORD_LEN+1 个字符数组的类型指针。如果没有围绕
*dict的括号,您将是正确的。如前所述,您不是。
标签: c arrays string pointers malloc