ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++参数传递

2022-07-07 21:35:23  阅读:159  来源: 互联网

标签:传递 函数 int void 主调 C++ 参数传递 实参


一、函数间参数传递的三种方式

1、值传递

主调函数:swap(x,y);

被调函数:void swap(int a,int b);

值传递特点分析:

  • 值传递只是将主调函数中实参的值传递给被调函数的形参,通常用于将主调函数中原始数据传递给被调函数。被调函数修改形参中的数据,修改的只是数据副本,不会影响主调函数中实参的数据。
  • 值传递是一种单向数据传递机制,实参可以是常量、变量或表达式。
  • 值传递的好处在于被调函数程序员错误修改了形参不会影响主调函数中的实参。函数间互不干扰。

2、引用传递

主调函数:swap(x,y);

被调函数:void swap(int &a,int &b);

引用传递特点分析:

  • 引用传递将被调函数的形参定义成主调函数中实参变量的引用,被调函数通过该引用间接访问主调函数中的变量。
  • 引用传递是一种双向数据传递机制。被调函数修改形参实际上修改的是对应的实参。主调函数通过引用将数据传给被调函数,被调函数也通过引用修改主调函数实参的值。
  • 引用传递的好处在于形参直接引用实参,不必另外分配内存可以降低占用;二是可以借此实现函数间的双向数据传递。

3、指针传递

主调函数:swap(&x,&y);

被调函数:void swap(int *a,int *b);

指针传递特点分析:

  • 指针传递将主调函数中实参的内存地址传给被调函数的指针形参,被调函数通过该内存地址间接访问主调函数中的变量。
  • 指针传递是一种双向数据传递机制。主调函数可以通过内存地址将数据传递给被调函数,被调函数可以通过内存地址修改主调的实参。
  • 指针传递的好处在于可以通过内存地址实现双向传递,二是在传递批量数据(如数组)时只需要传递一个内存首地址,这样可以提高数据传递效率,降低内存占用。

下面为三种参数传递的实列

 

 

 1 #include <iostream>
 2 
 3 void swap1(int a, int b)
 4 {
 5     int t;
 6     t = a; a = b; b = t;
 7 }
 8 void swap2(int &a, int &b)
 9 {
10     int t;
11     t = a; a = b; b = t;
12 }
13 void swap3(int *a, int *b)
14 {
15     int t;
16     t = *a; *a = *b; *b = t;
17 }
18 
19 int main()
20 {
21     std::cout << "Exchange x and y." << std::endl;
22     int x1 = 5, y1 = 10;
23     int x2 = 5, y2 = 10;
24     int x3 = 5, y3 = 10;
25     swap1(x1,y1);
26     swap2(x2, y2);
27     swap3(&x3, &y3);
28     std::cout << x1 << "," <<y1 << std::endl;
29     std::cout << x2 << "," << y2 << std::endl;
30     std::cout << x3 << "," << y3 << std::endl;
31     return 0;
32 }
33 //输出结果
34 Exchange xand y.
35 5, 10
36 10, 5
37 10, 5
View Code

 

 

 

#include <iostream>

void swap1(int a, int b)
{
    int t;
    t = a; a = b; b = t;
}
void swap2(int &a, int &b)
{
    int t;
    t = a; a = b; b = t;
}
void swap3(int *a, int *b)
{
    int t;
    t = *a; *a = *b; *b = t;
}

int main()
{
    std::cout << "Exchange x and y." << std::endl;
    int x1 = 5, y1 = 10;
    int x2 = 5, y2 = 10;
    int x3 = 5, y3 = 10;
    swap1(x1,y1);
    swap2(x2, y2);
    swap3(&x3, &y3);
    std::cout << x1 << "," <<y1 << std::endl;
    std::cout << x2 << "," << y2 << std::endl;
    std::cout << x3 << "," << y3 << std::endl;
    return 0;
}

Exchange xand y.
5, 10
10, 5
10, 5

标签:传递,函数,int,void,主调,C++,参数传递,实参
来源: https://www.cnblogs.com/qlzstudy/p/16456194.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有