在定义一个类或者结构体的时候,将类或者结构体传进函数,如下面代码所示
#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;
}