gpt4 book ai didi

c - Strcpy() 复制指针?

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

我有一个关于 strcpy() 的问题。据我了解,我认为 strcpy 复制位于指针处的字节,而不是指针本身。但这段代码似乎 react 不同。

char* str2  = (char*) malloc(50) ;
printf("str2:%d (%p), strTrim:%d (%p)", strlen(str2),*str2,strlen(strTrim),*strTrim) ;
strcpy(str2,strTrim);
printf("str2:%d (%p), strTrim:%d (%p)", strlen(str2),*str2,strlen(strTrim),*strTrim) ;

我得到的输出是:

str2: 64 (FFFFFFCD) , strTrim:8 (00000061)
str2:8 (00000061) , strTrim:8 (00000061)

现在,第一条输出行对我来说似乎很清楚。但第二行让我感到困惑。为什么它将 strTrim 的指针复制到 str2 ?实在是没看懂。

最佳答案

char* str2  = (char*) malloc(50) ;
strlen(str2); // undefined behavior, `str2` has an indeterminate value

malloc之后,分配的对象具有不确定的值。您不能使用 str2 参数调用 strlen:它还不是字符串。

清空第一个字节,str2 将成为指向(空)字符串的指针:

str2[0] = '\0';
strlen(str2); // OK, strlen(str2) is 0

关于c - Strcpy() 复制指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11505068/

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