C 字符数组

C 字符数组,c,arrays,C,Arrays,我正在尝试使用calloc构建一个单词的字符数组 我所拥有的: char** word; word=(char**)calloc(12,sizeof(char*)); for(i=0;i<12;i++){ word[i]=(char*)calloc(50,sizeof(char)); } char**word; word=(char**)calloc(12,sizeof(char*); 对于(i=0;i而言,代码是正确的。以下几点: 无需强制转换calloc()的返回值 sizeof(

我正在尝试使用calloc构建一个单词的字符数组

我所拥有的:

char** word;
word=(char**)calloc(12,sizeof(char*));
for(i=0;i<12;i++){
word[i]=(char*)calloc(50,sizeof(char));
}
char**word;
word=(char**)calloc(12,sizeof(char*);

对于(i=0;i而言,代码是正确的。以下几点:

  • 无需强制转换
    calloc()的返回值
  • sizeof(char)
    保证为1
因此,代码可以重写为:

char** word;
int i;

word = calloc(12, sizeof(char*));
for (i = 0; i < 12; i++)
    word[i] = calloc(50, 1);
正如使用
sizeof
的一种不太容易出错的方法所述:

word = calloc(12, sizeof(*word));

+使用
sizeof*ptr_变量
可以降低使用
sizeof
出错的概率。
word = calloc(12, sizeof(*word));