gpt4 book ai didi

c - 关于C中关键字 'return'的疑问

转载 作者:行者123 更新时间:2023-11-30 18:26:22 25 4
gpt4 key购买 nike

#include <stdio.h>

int* _pTest1(void) {
int a = 10;
int *_pA = &a;
return _pA;
}

int* _pTest2(int a){
int* _pA = &a;
return _pA;
}


int main()
{
int* _pT = _pTest1();
printf("%d\n", *_pT);

_pT = _pTest2(20);
printf("%d\n", *_pT);

return 0;
}

输出:

1073831176
20

为什么第一个输出不是10,而是1073831176? func _pTest1 中的“return _pA”和 func _pTest2 中的“return _pA”有什么区别?

最佳答案

在您的 _pTest1_pTest2 函数中,您返回的是局部变量 a 的地址,其作用域/生命周期仅为仅在函数内。访问外部函数的变量 aundefined behavior

注意:在这两个函数中,a 都是函数的本地函数(它们的内存来自堆栈)。

关于c - 关于C中关键字 'return'的疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17691741/

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