• C++函数返回引用


    C里没有引用,要把后缀改成cpp之后gcc才能识别为c++程序,关于gcc和g++的区别在另一篇,eclipse要重启重编译(不知怎么,eclipse不重启的话就总还是报错),编译通过了。

    "引用传递"的性质象"指针传递",而书写方式象"值传递",即使用时跟普通变量一样,看不出是使用了普通变量还是引用。

    引用是变量的别名。

    声明时必须初始化,并且从一而终。

    而函数返回引用,要求在传参里必须有引用或者指针类型作为被返回的值

    以下写法一和三都是函数返回引用,写法二只是返回引用类型的参数。

    写法一,函数返回值和传参都用引用:

    1. #include <stdio.h>  
    2. #include <stdlib.h>  
    3.   
    4. int &func(int& t)  
    5. {  
    6.   return t;  
    7. }  
    8.   
    9. int main(int argc, char * argv[]) {  
    10.   
    11.  int a=0;  
    12.  int b=func(a);  
    13.  printf("&a=0X%08X,&b=%08X\n",&a,&b);  
    14.         printf("a=%d, b=%d", a, b);  
    15.  return 0;  
    16. }  

    输出是:
    &a=0X0022FF4C,&b=0022FF48
    a=0, b=0

    写法二,传参用引用:

    1. #include <stdio.h>  
    2. #include <stdlib.h>  
    3.   
    4. int func(int& t)  
    5. {  
    6.   return t;  
    7. }  
    8.   
    9. int main(int argc, char * argv[]) {  
    10.   
    11.       int a=0;  
    12.       int b=func(a);  
    13.       printf("&a=0X%08X,&b=%08X\n",&a,&b);  
    14.       printf("a=%d, b=%d", &a, &b);  
    15.       printf("a=%d, b=%d", a, b);  
    16.   
    17.     return 0;  
    18. }  

    输出:
    &a=0X0022FF4C,&b=0022FF48//十六进制变量地址
    a=2293580, b=2293576a=0, b=0//十进制变量地址,变量值

    写法三,函数返回值用引用,传参用指针:

    1. #include <stdio.h>  
    2. #include <stdlib.h>  
    3.   
    4. int &func(int* t)  
    5. {  
    6.   return *t;  
    7. }  
    8.   
    9. int main(int argc, char * argv[]) {  
    10.   
    11.       int a=0;  
    12.       int b=func(&a);  
    13.       printf("&a=0X%08X,&b=%08X\n",&a,&b);  
    14.       printf("a=%d, b=%d", a, b);  
    15.   
    16.     return 0;  
    17. }  

    输出:

    &a=0X0022FF4C,&b=0022FF48
    a=0, b=0

  • 相关阅读:
    文件的权限
    正则表达式
    软硬链接的学习
    linux系统中的文件类型和扩展名
    把数组排成最小的数
    整数中1出现的次数(从1到n整数中1出现的次数)
    最小的K个数
    连续子数组的最大和
    数组中出现次数超过一半的数字
    字符串的排列
  • 原文地址:https://www.cnblogs.com/lionfight/p/2603865.html
Copyright © 2020-2023  润新知