[Basic C++] call-by-reference

这篇博客介绍了C++中的call-by-reference概念,通过addxy和subxy两个函数展示了值传递和引用传递的区别。addxy函数使用值传递,不会改变原始变量的值;而subxy函数使用引用传递,会直接影响到原始变量。文章提供了程序示例和输出说明,帮助读者理解这一关键特性。
摘要由CSDN通过智能技术生成

[Basic C++] call-by-reference

  • 题目描述
  • 答题区域
  • 提交记录
  • 成绩报告
  • 排名情况
  • 标准答案
  • 相关讨论

出题

邮箱

贺子阳

1499677880@qq.com

评测

截止时间

实时评测

2018-03-27 10:00

空间限制

时间限制

32MB

1000ms


Description

有如下一段程序:

void printtotal(int total) {
    printf("Total in Main: %d\n", total);

}
 int main() {
    int x, y, total;
    x = 10;
    y = 5;
    total = 0;

    printtotal(total);
    addxy(x, y, total);

    printtotal(total);

    subxy(x, y, total);
    printtotal(total);
    return 0;
}

请补充函数 addxy 和 subxy的声明和实现.
addxy形参中total使用按值传递,函数中输出
Total from inside addxy: (具体数字)
subxy形参中total使用按引用传递,将会修改主函数作用域中的total值,函数中输出
Total from inside subxy: (具体数字)

Input

None

Output

Total in Main: 0
Total from inside addxy: 15
Total in Main: 0
Total from inside subxy: 5
Total in Main: 5
标准答案:

 

  • source.h

  • framework.cpp

1

#include <stdio.h>

2

#include "source.h"

3

4

5

void printtotal(int total) { printtotal(int total) {

6

    printf("Total in Main: %d\n", total);printf("Total in Main: %d\n", total);

7

8

}

9

int main() { main() {

10

11

  int x, y, total;int x, y, total;

12

  x = 10;x = 10;

13

  y = 5;y = 5;

14

  total = 0;total = 0;

15

16

  printtotal(total);printtotal(total);

17

  addxy(x, y, total);addxy(x, y, total);

18

19

  printtotal(total);printtotal(total);

20

21

  subxy(x, y, total);subxy(x, y, total);

22

  printtotal(total);printtotal(total);

23

  return 0;return 0;

24

}

25

 

 

  • source.h

  • framework.cpp

1

<span style="color:#75715e">// Problem#: 17680</span>

2

<span style="color:#75715e">// Submission#: 4639413</span>

3

<span style="color:#75715e">// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License</span>

4

<span style="color:#75715e">// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/</span>

5

<span style="color:#75715e">// All Copyright reserved by Informatic Lab of Sun Yat-sen University</span>

6

#include <iostream>

7

using namespace std; namespace std;

8

int addxy(int,int,int); addxy(int,int,int);

9

int subxy(int&a,int&b,int&c); subxy(int&a,int&b,int&c);

10

11

int addxy(int a, int b, int c) { addxy(int a, int b, int c) {

12

  c = a + b;c = a + b;

13

  cout << "Total from inside addxy: " << c << endl;cout << "Total from inside addxy: " << c << endl;

14

}

15

16

int subxy(int&a,int&b,int&c) { subxy(int&a,int&b,int&c) {

17

  c = a - b;c = a - b;

18

  cout << "Total from inside subxy: " << c << endl;cout << "Total from inside subxy: " << c << endl;

19

}

20

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值