gpt4 book ai didi

c - 脑筋急转弯 : Pointer-reference-value

转载 作者:行者123 更新时间:2023-12-02 07:42:29 24 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Can a local variable's memory be accessed outside its scope?

今天我参加了一个关于基本 C 编码的研讨会,我们偶然发现了一个脑筋急转弯,在场的助手都无法回答我的内容。

代码是:

#include <studio.h>

int *f(int a) {
int b = 2 * a;
return &b;
}


int main(void) {
int *p4;
int *p8;
p4 = f(4);
p8 = f(8);
printf("p4: %i / p8: %i\n", *p4, *p8);
}

我知道代码有什么问题,我自己永远不会编写那样的代码,但它仍然很有趣。

输出是:

p4:16 / p8:16

当然是有意的

p4:8 / p8:16

我首先想到的是我们会得到一个错误,因为在函数 f 通过 &b 之后应该不再存在(可变范围)。

助手们将其解释为“幸运拳”,在那个位置的内存中还有一些东西,但对我来说并没有真正做到。

我想我把它贴在这里,看看是否有人有更好的解释。

重要: 这不是关于如何在函数中添加 2 个整数的问题 - 我完全有能力做到这一点 - 它:为什么在检索数字 16 时将其存储在 *p4 中打印。

期待鼓舞人心的答案,塞巴斯蒂安

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