c语言中形式参数和实际参数的宏定义分析.doc
《c语言中形式参数和实际参数的宏定义分析.doc》由会员分享,可在线阅读,更多相关《c语言中形式参数和实际参数的宏定义分析.doc(4页珍藏版)》请在三一文库上搜索。
1、c语言中形式参数和实际参数的宏定义分析C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。带参宏定义的一般形式为:#define 宏名(形参列表) 字符串在字符串中含有各个形参。带参宏调用的一般形式为:宏名(实参列表);例如:#define M(y) y*y+3*y /宏定义/ Codek=M(5); /宏调用在宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为k=5*5+3*5。【示例】输出两个数中较大的数。#include #define MAX(a,b) (ab) ? a
2、 : bint main()int x , y, max;printf(input two numbers: );scanf(%d %d, max = MAX(x, y);printf(max=%dn, max);return 0;运行结果:input two numbers: 10 20max=20程序第2行进行了带参宏定义,用宏名MAX表示条件表达式(ab) ? a : b,形参a、b均出现在条件表达式中。程序第7行max=MAX(x, y)为宏调用,实参 x、y 将代换形参a、b。宏展开后该语句为:max=(xy) ? x : y;对带参宏定义的说明1) 带参宏定义中,形参之间可以出现空
3、格,但是宏名和形参列表之间不能有空格出现。例如把:#define MAX(a,b) (ab)?a:b写为:#define MAX (a,b) (ab)?a:b将被认为是无参宏定义,宏名MAX代表字符串(a,b) (ab)?a:b。宏展开时,宏调用语句:max=MAX(x,y);将变为:max=(a,b)(ab)?a:b(x,y);这显然是错误的。2) 在带参宏定义中,不会为形式参数分配内存,因此不必指明数据类型。而在宏调用中,实参包含了具体的数据,要用它们去代换形参,因此必须指明数据类型。这一点和函数是不同的:在函数中,形参和实参是两个不同的变量,都有自己的作用域,调用时要把实参的值传递给形参
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 形式 参数 实际 定义 分析
链接地址:https://www.31doc.com/p-3250824.html