gpt4 book ai didi

c - 为什么这个 C 代码中 malloc i+1 的参数是?

转载 作者:行者123 更新时间:2023-12-02 05:27:13 26 4
gpt4 key购买 nike

通常一个 malloc 包含 sizeof ,但是这个没有,而是有 i+1 :

int main ()
{
int i,n;
char * buffer;

printf ("How long do you want the string? ");
scanf ("%d", &i);

buffer = (char*) malloc (i+1);
if (buffer==NULL) exit (1);

最佳答案

如果您想分配某种类型的数组,您通常会将所需元素的数量乘以该类型的大小,因为 malloc 中获取数组的大小字节

但是,char 数组是一种特殊情况;您不需要将所需的元素数乘以 sizeof(char),因为 sizeof(char) 由标准定义为始终1,乘以 1 得到另一个操作数。

+ 1 是为NUL 终止符腾出空间。如果你想要一个长度为 n 的字符串,你的数组的长度必须为 n + 1n 个空格用于字符串的 n 个字符,1 个空格用于终止符。

顺便说一句,你不应该强制转换malloc 的返回值。这将使您的代码在将来更容易更改。

关于c - 为什么这个 C 代码中 malloc i+1 的参数是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com