C++ 的引用

C++ 的引用

int num = 10 ;
//&和别名结合 表示引用
//引用和定义同时进行

int &a = num;            //此时&为定义,相当于类型为 int & 

注意 :引用必须初始化  !

一旦初始化,不能更改

 

2.数组的引用

int arr[5] = {10,20,30,40,50};
//假设引用名为my_arr 

int (&my_arr) [5]  = arr;

for(int i = 0;i<5 ;i ++)
{
  cout<<  my_arr[i] <<" "
}

cout<<endl;
//用 typedef 给数组类型取别名

int arr [5] = {100,20,330,40,50};
typedef int my_arr [5] ;

//此时 my_arr 是一个数组类型

my_arr  a = {1,2,3,4,5};

my_arr &  b  = arr;              //  先用typedef 再用引用

3.函数的引用

void swap (int &a , int &b)
{
    int tmp = a;
    a = b ;
    b =tmp;
}


void main()
{
    int a = 10 , b = 15;
    swap (a,b) ;
}

此时 传入的 是 a , b , swap ()函数修改的也是a , b ,但是 a和b 的值确实互换了

4. 引用作为函数返回值

int & my_data(void)
{
    static  int num = 10;
    return num;      
}

void test()
{
  int & ret = my_data();    
}

注意:不能返回局部变量的引用,局部变量在函数结束后会释放!

5.指针的引用

void my_str(char ** p_str)
{
    *p_str = (char *) calloc(1,32);  //添加头文件#include<stdlib.h>
     strcpy(*p_str ,"hello world");   //      #include<string.h>
}

void my_str2 (    char*(&my_str) )
{
    my_str = (char*)calloc(1,32);
    strcpy(*p_str , "hello world");
}
    
void test ()
{
    char * str = NULL;
    my_str(&str);
    cout<<"my_str =" <<str<<endl;
}    

 

posted @ 2022-07-31 10:53  陈之文  阅读(27)  评论(0)    收藏  举报