Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25759
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-30 15:29
文章分类

全部博文(11)

文章存档

2015年(11)

我的朋友
最近访客

分类: C/C++

2015-05-12 18:10:16


含参数的宏有时完成的是函数实现的功能,但是并非所有的函数都可以被含参数的宏所替代。具体而言,含参数的宏与函数的特点如下:

(1)函数调用时,首先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。

(2)函数调用是在程序运行时处理的,它需要分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,也不进行值的传递处理,也没有“返回值”的概念。

e) int *a[10]; // An array of 10 pointers to integers 

 

f) int (*a)[10]; // A pointer to an array of 10 integers 

int   *a[10]   :数组指针。数组a里存放的是10个int型指针
int   (*a)[10]   :a是指针,指向一个数组。此数组有10个int型元素

int   *a[10]
先找到声明符a,然后向右看,有[]说明a是个数组,再向左看,是int   *,说明数组中的每个元素是int   *。所以这是一个存放int指针的数组。

int(*a)[10]
先找到声明符a,被括号括着,先看括号内的(优先级高),然后向右看,没有,向左看,是*,说明s是个指针,什么指针?在看括号外面的,先向右看,有[] 是个数组,说明a是个志向数组的指针,再向左看,是int,说明数组的每个元素是int。所以,这是一个指向存放int的数组的指针。 

阅读(1004) | 评论(0) | 转发(0) |
0

上一篇:两个有序链表合并

下一篇:没有了

给主人留下些什么吧!~~