【发布时间】:2011-06-02 00:07:54
【问题描述】:
我可以访问不同函数中的局部变量吗?如果有,怎么做?
void replaceNumberAndPrint(int array[3]) {
printf("%i\n", array[1]);
printf("%i\n", array[1]);
}
int * getArray() {
int myArray[3] = {4, 65, 23};
return myArray;
}
int main() {
replaceNumberAndPrint(getArray());
}
上面这段代码的输出:
65
4202656
我做错了什么? “4202656”是什么意思?
我是否必须复制replaceNumberAndPrint() 函数中的整个数组才能比第一次访问更多?
【问题讨论】:
-
很难知道对你的意图最好的建议,在这里。但是您可能想阅读共享指针(shared_ptr 和朋友)。它们通过引用计数提供了垃圾收集语言的一些不错的属性。但不同,所以要小心。
-
我投票决定重新打开它并将其用作规范副本,以解决“我在返回指向局部变量的指针时崩溃,为什么?”的性质,而不是 @987654321 @ 经典的规范副本,而是“我没有崩溃,为什么不呢?”
-
@Lundin 有点问题,它同时具有 C 和 C++。
-
@AnttiHaapala 问题中没有 C++ 独有的东西,但不幸的是有 C++ 答案,所以标签必须保留。
-
如果在嵌入式系统上使用,那么动态分配内存是危险的,所以有 3 种可能性,使变量成为全局变量,使其成为静态变量,或者从调用例程传入指向变量的指针。
标签: c++ c pointers local-variables