为什么我从同一个指针中得到的值不一样[重复]?

问题描述 投票:0回答:1
#include<stdio.h>

struct Node {
    int a;
};

struct Node* prepare() {
    struct Node node = { 123456 };
    return &node;
}

int main() {
    struct Node* node = prepare();
    printf("%d\n", node->a);
    printf("%d\n", node->a);
    return 0;
}

以下是结果

enter image description here

那么为什么结果会不一样呢?

c
1个回答
0
投票

prepare 正在返回一个指向内存块的指针,一个在堆栈上分配的局部变量。内存块在返回后会被系统重复使用。当你第二次打印它时,内存块已经被覆盖。

© www.soinside.com 2019 - 2024. All rights reserved.