您的位置:首页 > 编程语言 > C语言/C++

20170429C语言指针二

2017-04-29 23:21 218 查看
问题:
函数fun返回了一个指向数组的指针,主函数中ptr接受到改地址。
可是地址上的值是1和2吗?
我认为,随着函数的结束,值应该被销毁才对,可是实际运行,ptr[0] = 1,ptr[1]=2

原来不能返回局部变量的地址!局部变量地址,这个位置,随时会被其他代码覆盖例如,简单的调用 printf();这个函数,企图输出数值 1,2都也可能出不了。这样个函数,他的返回值,就是几乎无用的,数组里储存的数据,也是无法应用的。所以,这种返回局部变量地址的做法,是要不得的。

函数修改为

#include <stdio.h>
 
int *fun(void)
{
    static int array[2] = {1,2};
    return array;
}
 
int main(int argc, char *argv[])
{
    int *ptr = fun();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: