文章目录
值传递和地址传递的区别:
值传递:所谓值传递,就是函数调用时实参将数值传入给实参,只是把实参复制传给形参,在子函数中修改形参,不会改变主函数中的实参;
地址传递:由于形参和实参表示同一个内容,在子函数中修改形参,也会改变主函数中的实参。
三种参数传递的区别:
值传递,形参不会修饰实参;
地址传递,形参会修饰实参;
引用传递,形参会修饰实参。
通过引用参数产生的效果同按地址传递是一样的,引用的语法更清楚简单。
例:三种参数传递实现两数交换
#include<iostream>
using namespace std;
//值传递
void swap01(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
//地址传递
void swap02(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
//引用传递
void swap03(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
}
int main()
{
int a = 10;
int b = 20;
swap01(a, b);//值传递,形参不会修饰实参
swap02(&a, &b);//地址传递,形参会修饰实参
swap03(a, b);//引用传递,形参会修饰实参
system("pause");
return 0;
}
三种参数传递的区别:
值传递,形参不会修饰实参;
地址传递,形参会修饰实参;
引用传递,形参会修饰实参。
通过引用参数产生的效果同按地址传递是一样的,引用的语法更清楚简单。