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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tsc0000 中级黑马   /  2015-10-30 09:50  /  701 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

定义新类型最好用typedef ,因为define 不能处理指针类型
#define pointer  char *
Pointer a,b;  //这里只有a指针,b 不是,pointer 中是被char * 简单的替换而已
使用#define时要记得加小括号,否则会出现意想不到的错误
例如:
#define SQUARE(x)  x*x
如果在上述声明之后,你把SQUARE(5)置于程序中,预处理器就会用下面这个表式替换上面的表达式:
5 * 5
警告:
但是,这个宏存在一个问题,鸡窝下面的代码段:
a = 5;
printf("%d\n",SQUARE(a+1));
头一看,你可能觉得这代码将打印36,但事实上,它将打印11,想知道为什么?请观察被替换的宏文本,参数x被文本a+1替换,所以这条语句 实际上就变成 了
printf("%d\n",a+1 * a+1);



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马