在c中为字符串分配内存?

elm*_*ehi 1 c memory allocation sizeof

我如何为c中的给定char数组*bla分配内存?

blaarray = (char*)malloc(strlen(bla)*sizeof(bla));
Run Code Online (Sandbox Code Playgroud)

要么

blaarray = (char*)malloc(strlen(bla)*sizeof(char*));
Run Code Online (Sandbox Code Playgroud)

还是两个?

谢谢

**注意编辑以反映愚蠢的拼写错误.我意外地错误地粘贴了选项

Har*_*ris 6

如果您想要blaarray与字符串大小相同bla

blaarray = malloc((strlen(bla)+1) * sizeof(char));
Run Code Online (Sandbox Code Playgroud)

现在让我解释一下.

1)要获取字符串的长度,请仅使用strlen()notsizeof

2)1必须添加因为在返回长度时strlen()不包括\0字符

3)char*是指针char,要获得a的大小char,应该做的sizeof(char)

4)当然你需要申报blaarray,你可以这样做

char* blaarray;
Run Code Online (Sandbox Code Playgroud)

5)你不需要投出回报malloc(),看看这个.

6)sizeof(char)是1,所以你可以跳过它.

所以,你的所有代码都应该是这样的.

char* blaarray;
blaarray = malloc((strlen(bla)+1));
Run Code Online (Sandbox Code Playgroud)