gpt4 book ai didi

c - 菜鸟关于malloc和sizeof的问题

转载 作者:太空狗 更新时间:2023-10-29 16:50:57 27 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/1533519/

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