C++(四)函数
1. 基础
1.1形式参数
形式参数就像函数内的局部变量,在进入函数时被创建,退出函数时被销毁。
调用函数时,有三种向函数传递参数的方式:
默认情况下,C++使用传值调用来传递参数。
2. 指针(*),取地址(&),解引用(*),引用(&)
C++提供了两种指针运算符,一种是取地址运算符**&,一种是间接寻址运算符&**。
例1. 指针与取地址
int main() {
int num = 3;
int* p = # // 将变量num的地址取出来,存到指针p中
printf("%d 的地址是 %p\n", num, p);
return 0;
}
输出
3 的地址是 0x7ffeefbff3ac
int* p表示指针,&num表示取地址。
例2. 解引用与指针赋值
int main(){
int num = 7;
int* p = #
printf("数值%d所在的地址是 %p\n", num, p);
printf("指针p所指向的地址为 %p , 该地址上所保存的值为%d\n", p, *p);
*p = 100;
printf("指针p所指向的地址为 %p , 该地址上所保存的值为%d\n", p, num);
return 0;
}
输出
数值7所在的地址是 0x7ffeefbff3b8
指针p所指向的地址为 0x7ffeefbff3b8 , 该地址上所保存的值为7
指针p所指向的地址为 0x7ffeefbff3b8 , 该地址上所保存的值为100
printf(“指针p所指向的地址为 %p , 该地址上所保存的值为%d\n”, p, *p)中的*为解引用操作符,它返回指针p所指的对象的值。
也可以给指针p赋值,使其指向另外一个地址。(*p实际上为一个左值)
int main(void)
{
int num = 7, another = -5;
int *p = #
p = &another;
printf("%d\n", *p);//此时p指向了another,所以输出了another的值,即-5
return 0;
}
输出
-5
例3 引用
通俗解释,引用就是起别名
int main()
{
int val = 7, val2 = 999;
int &refval = val, &refval2 = val2; //引用必须要初始化,使其绑定到一个变量上
//修改引用的值将改变其所绑定的变量的值
refval = -12;
printf("%d %d\n", val, refval);//-12,refval的值和val一样
//将引用b赋值给引用a将改变引用a所绑定的变量的值,
//引用一但初始化(绑定),将始终绑定到同一个特定对象上,无法绑定到另一个对象上
refval = refval2;
printf("%d %d\n", val, refval);//999
return 0;
}
输出
-12 -12
999 999