gpt4 book ai didi

C结构变量分配?

转载 作者:行者123 更新时间:2023-12-04 12:06:48 25 4
gpt4 key购买 nike

我是 C 的新手,所以请纠正我的任何错误。

这里有一些代码,有点像我的代码

//typdef stuff for apple, *apple_t here
apple_t get() {
apple a;
a.num = 0;

apple_t ap = &a;
printf("set num to %d\n", ap->num);
return ap;
}

// ap above is placed into read(ap)
void read(apple_t ap) {
printf("num: %d\n", ap->num);
}

为什么对于“set”打印 ap->num == 0,但是当我在读取函数中执行 printf 时我得到一些垃圾号码,比如 -1218550893?这是怎么回事?整数集是否被释放? C 在做什么?你如何解决这个问题?

最佳答案

您正在返回局部变量的地址。

在这种情况下,变量 a 是一个局部变量。函数结束后丢失。

有两个选项可以解决这个问题:

  1. 按值返回。不要返回它的地址。
  2. 使用malloc() 为其分配内存。但是您必须确保稍后 free() 它。

关于C结构变量分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875314/

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