- 函数的定义:
返回值类型 函数名(参数定义列表)
调用方法:函数名(参数列表) - 函数参数的引用型定义:(基本类型或结构体类型)
//对比
int result=0;
void getResult(int r){
++r;
}
int main(){
getResult(result);//函数调用
return 0;
}
//此方法改变的是函数内部r的值,并不是result这个变量。
//函数调用过程中只是把result的值赋值给了r这个变量
//执行完毕之后,result的值并没有改变。
//基本类型或者结构体类型参数 的引用型定义
int result=0;
void getResult(int &r){//r前多了一个取地址符号&
++r;
}
int main(){
getResult(result);//函数调用
return 0;
}
//直接引用result的值
//也就是把result的值赋值给r
//再取这个值的地址(也就是result的地址)
//而不是将result的值赋值过来给r
//简单的说就是result替换掉r
//执行完毕之后result的值变为1
- 用纯C来实现:(plain c:)
//基本类型或者结构体类型参数 的引用型定义 plain C
int result=0;
void getResult(int* r){//把r定义为一个整型类型的指针
++(*r);
//函数体内需要对r的进行改变
//r是一个指针
//所以需要对r先取值
//在还原成一个整型变量
}
int mian(){
getRestlt(&result)//函数调用
return 0;
}
//&取地址
//result 是一个整型变量
//但函数的形参数是一个指向整型变量的指针
//所以:
//传参数的时候:就应该先把result的地址传进去
//&result:取到result的地址
//传到函数中赋值给了 可以存放地址的 指针类型变量r
//而指针类型变量r 前面又加了一个*
//则这个*又找到了result的值
//就可以对(实参)result的值进行改变了
//就达到了用指针实现了引用的效果
//指针型变量的引用型定义
int* p=NULL;
void getResult(int* &p){
p=q;
}
int mian(){
getResult(p);
}
void add(int a,int b,int&c){
c=a+b;
}
int *p=NULL;
void getResult(int **p){
*p=q;
}
get Result(&p);