C++传引用

来源:互联网 发布:算法研究员是做什么 编辑:程序博客网 时间:2024/06/05 05:17

在定义一个类或者结构体的时候,将类或者结构体传进函数,如下面代码所示

#include <iostream>using namespace std;typedef struct date *PtrTodate;struct date{    int p[10];};int func(int sum,PtrTodate T){    sum = 0;    //T=new date;    for(int i = 0;i <10;i++){        T->p[i] = i;        sum+=T->p[i];    }    return sum;}int main(){    PtrTodate T;    T = new date;    int sum;    sum = func(sum,T);    cout<<sum<<endl;    for(int i =0;i<10;i++)        cout<<T->p[i];    return 0;}

在上面代码中,如果在函数

int func(int sum,PtrTodate T)

中,T=new date; 不被注释掉,则T指向别处,返回时,在main() 函数体中的T的内容并没有被修改过。

在如果在函数的调用过程中,传引用时,则返回时,在main() 函数体中的T的内容是修改过后的。因为传引用相当于传变量本身,类似捆绑的原理。

#include <iostream>using namespace std;typedef struct date *PtrTodate;struct date{    int p[10];};int func(int sum,PtrTodate &T){    sum = 0;    T=new date;    for(int i = 0;i <10;i++){        T->p[i] = i;        sum+=T->p[i];    }    return sum;}int main(){    PtrTodate T;    T = new date;    int sum;    sum = func(sum,T);    cout<<sum<<endl;    for(int i =0;i<10;i++)        cout<<T->p[i];    return 0;}
原创粉丝点击