C++函数参数的传递方式

分类:知识百科 日期: 点击:0

有四种:值传递、引用传递、指针传递和C++11新增的右值引用传递。

值传递

值传递是最常见的传参方式,也是C++函数调用时最安全的传参方式。值传递就是把函数的参数值复制一份传入函数中,函数对参数的操作不会影响到原参数值。值传递适用于简单的数据类型,比如int、float等,也可以用于结构体、类等复杂数据类型。

// 值传递示例
void swap(int a, int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

int main()
{
    int x = 100;
    int y = 200;
    swap(x, y);
    cout << "x=" << x << ",y=" << y << endl;  // 输出 x=100,y=200
    return 0;
}

引用传递

引用传递是C++函数参数传递中最常用的一种方式,它的本质就是把函数的参数值传入函数中,但是函数对参数的操作会影响到原参数值。引用传递可以避免函数参数值的复制,节省空间和时间,可以提高程序的运行效率。

// 引用传递示例
void swap(int &a, int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

int main()
{
    int x = 100;
    int y = 200;
    swap(x, y);
    cout << "x=" << x << ",y=" << y << endl;  // 输出 x=200,y=100
    return 0;
}

指针传递

指针传递是把函数的参数地址传入函数中,函数对参数的操作会影响到原参数值,也可以避免函数参数值的复制,节省空间和时间,可以提高程序的运行效率。

// 指针传递示例
void swap(int *a, int *b)
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}

int main()
{
    int x = 100;
    int y = 200;
    swap(&x, &y);
    cout << "x=" << x << ",y=" << y << endl;  // 输出 x=200,y=100
    return 0;
}

右值引用传递

C++11新增的右值引用传递,是把函数的参数值传入函数中,函数对参数的操作会影响到原参数值,但是又不会复制参数值,可以节省空间和时间,可以提高程序的运行效率。

// 右值引用传递示例
void swap(int &&a, int &&b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

int main()
{
    int x = 100;
    int y = 200;
    swap(std::move(x), std::move(y));
    cout << "x=" << x << ",y=" << y << endl;  // 输出 x=200,y=100
    return 0;
}

以上就是,值传递、引用传递、指针传递和右值引用传递,它们有自己的优缺点,在使用时要根据实际情况选择最合适的传参方式。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。