C struct变量分配?

Der*_*rek 2 c

我是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);
}
Run Code Online (Sandbox Code Playgroud)

为什么对于"set"打印ap-> num == 0,但是当我在read函数中执行printf时,我会得到一些像-1218550893这样的垃圾编号?这是怎么回事?是否释放了整数集?C做什么?你是如何解决这个问题的?

Mys*_*ial 9

您正在返回本地变量的地址.

在这种情况下,变量a是局部变量.功能结束后丢失.

有两种方法可以解决这个问题:

  1. 按价值归还.不要归还其地址.
  2. 使用分配内存malloc().但是你必须在以后确定free()它.