gpt4 book ai didi

c - 从改变指针地址的函数返回,地址保持不变

转载 作者:太空狗 更新时间:2023-10-29 15:20:09 27 4
gpt4 key购买 nike

我编写了一个更复杂的程序,但我已将我的问题缩小为以下一个:为什么这个程序打印垃圾而不是 hzllo?我用调试器跟踪了 temp 和 p 的值和内存地址,它从 foo 函数正确返回,并且出于我不理解打印垃圾的原因。

void foo(char **str) {
char temp[79];
strcpy_s(temp,79,*str);
*(temp + 1) = 'z';

*str = temp;

}

void main() {

char *p = (char*) malloc(79 * sizeof(char));
p = "hello";
foo(&p);

printf("%s", p);
}

最佳答案

改变

char temp[79];        # allocated on the stack, vanishes on return

...到...

static char temp[79]; # has a longer lifetime

此外,您不需要 malloc(3)

关于c - 从改变指针地址的函数返回,地址保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14349162/

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