为c中的字符串分配内存?
如何为c中给定的char数组*bla分配内存为c中的字符串分配内存?,c,memory,sizeof,allocation,C,Memory,Sizeof,Allocation,如何为c中给定的char数组*bla分配内存 blaarray = (char*)malloc(strlen(bla)*sizeof(bla)); 或 或者两者都没有 谢谢 **注意编辑以反映愚蠢的打字错误。如果希望blaarray与字符串bla的大小相同,我意外地错误粘贴了选项 blaarray = malloc((strlen(bla)+1) * sizeof(char)); 现在让我解释一些要点 1) 要获取字符串的长度,请仅使用strlen()而不是sizeof 2) 必须添加1,因
blaarray = (char*)malloc(strlen(bla)*sizeof(bla));
或
或者两者都没有
谢谢
**注意编辑以反映愚蠢的打字错误。如果希望
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()
的返回,请参阅
6) sizeof(char)
为1,因此可以跳过该选项
所以,你的代码应该是这样的
char* blaarray;
blaarray = malloc((strlen(bla)+1));
如果希望
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()
的返回,请参阅
6) sizeof(char)
为1,因此可以跳过该选项
所以,你的代码应该是这样的
char* blaarray;
blaarray = malloc((strlen(bla)+1));
你最后的猜测是:两者都不是。在这两种情况下,括号成对不匹配,因此不清楚您要做什么。但我的猜测是分配足够的内存来存储一个
size\t
类型变量。您最后的猜测是:两者都不是。在这两种情况下,括号成对不匹配,因此不清楚您要做什么。但我的猜测是分配足够的内存来存储一个size\u t
type变量。谢谢不过只有一个问题。如果我最终没有遵循5,还需要4吗?这是有道理的。谢谢不过只有一个问题。如果我最终没有遵循5,还需要4吗?