值传递、指针传递、引用传递
指针和引用
指针:是一个变量,存储着一个地址(占4个字节),这个地址指向一块内存。
引用:是一个已有变量的别名,所以引用在创建的时候就需要初始化。
#include <iostream>
using namespace std;
typedef struct{
int a;
int b;
int c;
void (*function1)(int);
void (*function2)(int *);
void (*function3)(int &);
}param;
void function1(int _a)
{
_a += 10;
}
void function2(int *b)
{
*b += 10;
}
void function3(int &c)
{
c += 10;
}
int main(void)
{
param param1 = {10,20,30,function1,function2,function3};
//值传递,形参是实参在栈中的拷贝,形参是实参的副本。从被调用函数来看,
//值传递是单向的(实参—>形参),即参数值只能传入。(效率低下)
param1.function1(param1.a);
//指针传递,形参是指向实参地址的指针,改变形参指向地址的值同样也会改变实参的值。
param1.function2(¶m1.b);
//引用传递,形参相当于实参的“别名”,形参在栈。中开辟了空间,保存的是实参的地址。
//被调函数对形参进行的任何操作都被认为是间接寻址。所以会影响实参的值
param1.function3(param1.c);
cout << "param1.a: " << param1.a << endl;
cout << "param2.b: " << param1.b << endl;
cout << "param3.c: " << param1.c << endl;
system("pause");
return 0;
}