灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2950回复:0

[C++技术]c++语言初学-return返回值

楼主#
更多 发布于:2012-09-06 11:33


return 在执行之前会创建一个临时的变量,来保存要传回的值,
   返回值:返回一个副本值,原本的已被消除
   返回指针:当返回的时候,原指针空间会被消除,如果没有被其它程序使用,则是能正确返回,如果释放后被其它程序使用,则会有可能修改掉此空间内的值,返回值会错误;
  
什么样的值除了函数仍然有效:
    1.全局变量;
    2.static变量;因为static相当于一个全局变量,不会被系统回收
   例:
[cpp]
#inlcude<iostream.h>
      int; sum(int,int);
      int main(void){
        int x = 5,y = 10;
    printf("%d\n",sum(x,y));
    return 0;
      }
    int; sum(int a,int b){
      static int x;
      x = a+b;
      return x;
    }

3.int* p = new int;
    返回p的时候,会产生一个p的副本,本身已经无效了,但是p的副本里www.atcpu.com
存有它new出来的地址,所以是有效的。(对于地址没有手动释放是有效的

   例:
[cpp]
int* small(int x,int y){
             int* p = new int;
             return p;
    }  

4.如果传递的是一个,而且返回的也是的话,则可以正确的返回,因为它是在函数外定义的。
[cpp]
#include<iostream>
int; max(int;,int;);
int main(){
    int x = 15,y = 10;
    printf("%d\n",max(x,y));
    return 0;
}
int; max(int ;a,int ;b){
    if(a>b)
       return a;
       else
       return b;
}

5.如果传递的是变量,而且返回的也是变量,也可以正确返回。但是它创建一个副本返回时,如果不及时接收的话,会消失。


注意:永远不要返回本地变量的指针和,会有错误;



喜欢0 评分0
游客

返回顶部