gpt4 book ai didi

c - 新手关于malloc和sizeof的问题

转载 作者:行者123 更新时间:2023-11-30 16:11:10 25 4
gpt4 key购买 nike

有人可以向我解释为什么我对字符串大小为 6 的 malloc 的调用会返回 4 个字节的 sizeof 吗?事实上,我给 malloc 的任何整数参数都会得到 4 的 sizeof。 接下来,我尝试复制两个字符串。为什么我复制的字符串的输出是(NULL)?以下是我的代码:

int main()
{
char * str = "string";
char * copy = malloc(sizeof(str) + 1);
printf("bytes allocated for copy: %d\n", sizeof(copy));
while(*str != '\0'){
*copy = *str;
str++;
copy++;
}
copy = '\0';
printf("%s\n", copy);
}

最佳答案

sizeof(str) 返回 char* 类型指针的大小。你应该做的是 malloc 它本身的字符串大小:

char * copy = malloc(strlen(str) + 1);

此外,这些行:

while(*str != '\0'){
*copy = *str;
str++;
copy++;
}
copy = '\0';

可以很容易地用 C 重写,如下所示:

while(*copy++ = *str++);

关于c - 新手关于malloc和sizeof的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58682393/

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