A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Star_FDt78 中级黑马   /  2015-12-13 01:22  /  836 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1 宏的概念及无参宏定义方法
宏定义是由原程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的。在c语言中,宏分为有参数和无参数两种
2 无参宏定义:后面不带参数,格式如下
          #define 宏名 字符串
其中#表示这是一条预处理指令,define为宏定义命令,标识符为宏名,字符串 可以是常数,表达式,格式串

3 宏替换
源程序在编译之前,由预处理程序对我们写的源代码进行处理,会把源代码中所有出现宏名的地方一律使用宏的内容去替换,不会在外围加上括号,如有需要,在定义的时候加上

4 有参宏的定义
          #define 宏名(形参表) 字符串
例子:
#define SUM(a) a+a
SUM(3)  //不仅要 a+a替换,而且还要把实参3带入字符串中
int n =SUM(3);//n = 6


#define M(x,y) x*y+x+y
int result = M(4,5);// result=29

5 有参宏的使用注意事项
1->宏的形参之间之间可以出现空格,但宏名跟参数之间不能出现空格
2->每个参数最好用括号括起来(如有必要)
3->可以用宏来定义多个语句


6 应用:使用有参宏求最大值
#define MAX(a,b) a>b?a:b

int m = MAX(34,88);//m就是这两个数的最大值

7 #define与#typedef的区别

#define INIT1 int*     //定义一个宏,宏名:INIT1
typedef int* TINT;     //int起一个别名 TINT
int num=10;

INIT1 a,b;                 //a是指针,b不是指针

TINT a1,b1;              //a,b都是指针
总结:宏定义只是做一个简单的替换,而typedef是给数据类型取了个别名,别名依旧具有数据类型定义说明的功能

1 个回复

倒序浏览
宏在哪个学到,没学到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马