如何为c中给定的char数组*bla分配内存?
blaarray = (char*)malloc(strlen(bla)*sizeof(bla));
或
blaarray = (char*)malloc(strlen(bla)*sizeof(char*));
或者两者都没有?
谢谢
**注释编辑反映愚蠢的打字我不小心把选项粘贴错了
最佳答案
如果希望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));
关于c - 在c中为字符串分配内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33327931/