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
}

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

经验分享 程序员 微信小程序 职场和发展