使用宏进行参数互换

描述

定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值.

输入

两个数,空格隔开

输出

交换后的两个数,空格隔开

输入样例 1 

5 2

输出样例 1

2 5

输入样例 2 

3 8

输出样例 2

8 3

代码一(如下):

#include <iostream>
using namespace std;
void change(int a, int b)          //函数定义
{
	int t;
	t = a;
	a = b;
	b = t;
	cout << a << " " << b;
}
int main()
{
	void change(int, int);       // 函数内部声明
	int a, b;
	cin >> a >> b;
	change(a, b);                 //函数调用
	return 0;
}

代码二(如下):宏定义(用#define定义的符号常量和用const声明的常变量) 

#include <iostream>
using namespace std;
#define SWAP(a, b,t) (t=a,a=b,b=t)
int main() {
    int x, y, t;
    cin >> x >> y;
    SWAP(x, y,t);
    cout << x << " " << y;
    return 0;
}

问题点:

①:实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回给实参。在调用函数时,编译系统临时给形参分配存储单元。注意:实参单元与形参单元是不同的单元。

 调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中实参的值。

②:函数的返回值是通过函数中的return语句获得的。return语句将被调用函数中的一个确定值带回主调函数中去。

③:一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。

④:return语句后面的括号可以要,也可以不要。如“return z;”与“return (z);”等价。return后面的值可以是一个表达式。例如return(x>y?x:y);

⑤:函数调用有三种方式:

1)函数语句

把函数调用单独作为一个语句,并不要求函数带回一个值,只是要求函数完成一定的操作。如:change();

2)函数表达式

函数出现在一个表达式中,这时要求函数带回一个确定的值以参加表达式的运算。如:c=2*max(a,b);

3)函数参数

函数调用作为一个函数的实参。如m=max(a,sqrt(b));

⑥:符号常量#define只是用一个符号代替一个字符串,在预编译时把所有符号常量替换成所指定的字符串。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值