zoukankan      html  css  js  c++  java
  • c++函数返回局部变量

    char* func()  
    {  
        char arr[] = "Hello,World
    "; // arr[] 全部元素保存在栈内存上 
        return arr;  // 返回局部变量或暂时变量的地址  
        /*即返回了指向栈内存的指针。而返回后栈内存都会被自己主动回收,main里面接收到的地址指向的内存已经不存在。变为野指针 */
    }  
    int main()  
    {  
        printf("%s", func());  // 打印出垃圾数据。也可能打印出 "Hello,World,取决于编译器对栈内存回收的处理方法  
        return 0;  
    }  

    改进方法例如以下:

    char* func()  
    {  
        char *arr = "Hello,World
    ";    // "Hello,World
    " 保存在仅仅读常量区,非栈内存不受函数返回影响  
        return arr;   // 事实上返回的是 arr 的副本。返回后 arr 变量也销毁。可是其指向常量区不受影响  
    }  
    int main()  
    {  
        printf("%s", func());   // 能打印出 Hello,World  
        getchar();  
        return 0;  
    }
    char* func()  
    {  
        static char arr[] = "Hello,World
    ";    // "Hello,World
    " 保存在静态存储区。非栈内存不受函数返回影响。  
        return arr;  //返回指向静态存储区的指针  
    }  
    int main()  
    {  
        printf("%s", func());   // 能打印出 Hello,World  
        return 0;  
    }  
    
  • 相关阅读:
    powerdesigner
    UML类图几种关系的总结(转载 http://blog.csdn.net/tianhai110/article/details/6339565 )
    vuex
    options请求(复杂请求)
    Vue 编程式的导航
    JS定义类
    cors中间件
    vue axios
    restframewor 版本(version)
    pycharm 安装vue
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7353350.html
Copyright © 2011-2022 走看看