C++函数的参数传递(三种传参形式)

函数的参数传递共三种:传值、传指针和传引用。其中后两种功能类似。
传值
参数传递到函数后,只是一个局部变量,修改这个变量无法改变实参的值,即这是个单向传递。

void add(int x)
{
    
    
x++;
}
int main()
{
    
    
int b=1;
add(b);//函数完成后b的值不变
}

传指针
理论上讲,传进函数里的同样也是一个值,但这个值实质上是一个地址,因此修改这个指针无法影响外部的指针,即形成与实参是两个相互独立的指针。
但是,在形参所指的地址改变前,通过指针里面保存的地址来修改指针保存的地址里面的值。

void test(int* x)
{
    
    
    *x += 5;
}
int main()
{
    
    
    int a = 0;
    int* b = &a;
    test(b);
    cout << *b << " " << a;//结果是5 5
}

传引用
引用的传递即传递参数的地址,修改这个地址里面的内容自然会修改到外面的参数。

void add1(int& x)
{
    
    
    x += 5;
}
int main()
{
    
    
    int a = 1;
    int* b = &a;
    add1(a);
    cout << *b << " " << a;//结果是6 6
}

概括:
.在函数被调用时才分配形参的存储单元
.实参可以是常量、变量或表达式
.实参类型必须与形参相符
.值传递时传递参数值,即单向传递
.引用传递可以实现双向传递
.常引用作参数可以保障实参数据的安全
.传引用比传值更高效(这个以后有时间讲)

猜你喜欢

转载自blog.csdn.net/qq_43530773/article/details/113732502