字符数组
问题描述:
我正在尝试使用calloc构建一个字数组。字符数组
我有什么:
char** word;
word=(char**)calloc(12,sizeof(char*));
for(i=0;i<12;i++){
word[i]=(char*)calloc(50,sizeof(char));
}
,如果我想有12场的每能够存储50个字符的字符数组这是正确的吗?
谢谢!
答
该代码是正确的。几点:
- 没有必要投返回值的
calloc()
(Do I cast the result of malloc?) -
sizeof(char)
保证是1
所以代码可以被改写为:
char** word;
int i;
word = calloc(12, sizeof(char*));
for (i = 0; i < 12; i++)
word[i] = calloc(50, 1);
在C,对'字符串'进行操作的大多数函数要求char
数组以NULL结尾(printf("%s\n", word[i]);
)例子)。如果需要,该缓冲器保持50个字符,并用于为“字串”,那么为空终止分配附加字符:
word[i] = calloc(51, 1);
作为评论由eq-一个不易出错的方法来使用sizeof
是:
word = calloc(12, sizeof(*word));
+使用'sizeof * ptr_variable'减少了sizeof'出错的概率。 – 2012-08-09 16:17:49