第1个回答 推荐于2018-05-04
宏定义 简单的字符替换 在 编译前做的替换
#define THREE 3
int a = THREE;
在送编译时 替换为 int a = 3;
#define POWER(x) x * x
int a = POWER(10)
在送编译时 替换为 10 * 10
注意 若为 POWER(5 + 3) 则替换为 5 + 3 * 5 + 3
所以宏只是简单的文本替换
*LinkList 在typedef 的作用下 是LNode 的指针类型
也就是说申明LNode 指针的时候你可以用
LinkList p = 0;//等价于 LNode* p = 0;
new 动态分配内存空间本回答被提问者和网友采纳
第2个回答 2009-12-09
C++中一般不用#define来定义常量或者函数
我觉得唯一用到的地方是在防止头文件重复包含的时候#ifndef...#define...#endif
你下面问的*LinkList是一个LNode结构的别名,同样可以用他来创建一个LNode结构对象.
C++里最好把结构,类什么的都看成对象.
LinkList &L,这里就不难理解了吧,LinkList 是对象类型(一个LNode的指针),&L是参数名(等于 &(*LNode) ).
L = new LNode;
new是C++的内建方法,用来开辟内存空间.这里就是为L分配一个LNode结构那么大的内存空间.
第3个回答 2009-12-09
正常情况下所有的头文件都是
#ifndef ....
#define
//头文件中的内容
#endif
上面的结构是为了不使头文件出现重复包含.
另一种 :
如 #define MAXNUM 500
#define abs(x) ((x)>0 ? (x) : -(x)
是宏.
你说的LinkList是LNode的指针,而&L是LinkList的引用,目的是把程序中分配的LNode返回。
new就是c中的malloc,动态分配一个LNode
第4个回答 2009-12-09
第一个问题:
#define是定义宏,楼上说避免使用是什么意思,你如果说GOTO避免使用我很赞同,但是定义宏是个很正常的使用啊。
第2个问题:
*LinkList 指针类型,在这里LinkList就想INT已经成为一个类型了,&L就是一种引用传参,保证传过去的是地址。
NEW就是开辟内存空间,比如 LinkList L 只是定义了一个指针型的变量L,但是指针如果要使用必须要开辟内存空间,所以还要加上 L = NEW LNode();
还有不明白的M我。