如何为c?
中的给定char数组* bla分配内存blaarray = (char*)malloc(strlen(bla)*sizeof(bla));
或
blaarray = (char*)malloc(strlen(bla)*sizeof(char*));
是不是?
感谢
**注意编辑以反映愚蠢的拼写错误。我意外地错误地粘贴了选项
答案 0 :(得分:6)
如果您希望blaarray
与字符串bla
blaarray = malloc((strlen(bla)+1) * sizeof(char));
现在让我解释一下。
1)要获取字符串的长度,请仅使用strlen()
而不是sizeof
2)必须添加1
,因为strlen()
在返回长度时不包含\0
字符
3)char*
是指向char
的指针,要获得char
的大小,应该sizeof(char)
4)当然,您需要声明blaarray
,您可以这样做
char* blaarray;
5)您无需强制转换malloc()
,请参阅this。
6)sizeof(char)
为1,所以你可以跳过它。
所以,你的所有代码都应该是这样的。
char* blaarray;
blaarray = malloc((strlen(bla)+1));