首先看一下下面的两种定义,想想会有什么不同:
第一种定义:宏定义,以FU表示int*(在编译时就替换了)
#define FU int*
第二种定义:
typedef int* FU;
好了,应用以上的FU分别定义变量有什么区别呢?
FU i,j;
如果使用第一种定义,则 i 是一个int型指针。 j 仅仅是一个int型变量。
如果使用第二种定义,则 i 和 j都是一个int型指针。
比如如下代码:
typedef int* FU; int array[3]={1,2,3}; FU i,j; i=array; //i[1]的值为2,i是一个int型的指针 j=array; //j[1]的值为2,j是一个int型的指针
#define FU int* int array[3]={1,2,3}; FU i,j; i=array; //i[1]的值为2,i是一个int型的指针 j=array; //这样是非法的,因为j是一个int型变量
相关推荐
介绍#define和typedef的区别于使用
文章主要介绍了typedef和#define的用法与区别
#define是预处理指令 typedef是在编译时处理的 typedef与#define的区别
在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++的宏定义命令,typedef用来为一...
是a+b 然后去和c,d 相乘,但是因为使用了define(它只是一个简单的替换),所以式子实际上变成了 c*a + b*d 另外举一个例子: #define pin (int*); pin a,b; 本意是a 和b 都是int 型指针,但是实际上变成int* a,b; ...
定义的类型不同,typedef定义的是类型,而#define不只是可以为...typedef虽执行范围有限,但在范围内比#define要更加灵活,例如在指针类型的定义上,typedef可以定义一个指针类型,而#define只能定义一个指针。 type
以下是对C/C++语言中,typedef和#define的用法以及区别进行了详细的介绍,需要的朋友可以过来参考下
typedef与define的用法,说明typedef和define的区别及各自的特殊用法
typedef int * pint ; #define PINT int * 那么: const pint p ;//p不可更改,但p指向的内容可更改 const PINT p ;//p可更改,但是p指向的内容不可更改。 (const pint p === ( const pint )p) (const PINT p ...
简单介绍了这两者的区别,可以供初学者参考,以便更深入理解
#define N 50 /*叶子结点数*/ #define M 2*N-1 /*树中结点总数*/ typedef struct { char data[5]; /*结点值*/ int weight; /*权重*/ int parent; /*双亲结点*/ int lchild; /*左孩子结点*/ int rchild; /*右...
本篇文章是对C语言中#define与typedef的互换细节进行了详细的分析介绍,需要的朋友参考下
文章简单介绍了#define,const,typedef三者联系与区别
#define的用法与#define和typedef的区别详解。 简单的define定义#define MAXTIME 1000,define的“函数定义”,宏的单行定义,define的多行定义,如何定义宏、取消宏,条件编译等等。
typedef struct { vextype vexs[MAXLEN]; //vextype型的vexs[MAXLEN]数组存放顶点 edgetype arcs[MAXLEN][MAXLEN]; //edgetype型的arcs[MAXLEN][MAXLEN]二维数组存放边的权值 int vexnum,arcnum; }MGRAPH; ...
typedef四个用途和两个陷阱、用法及与define的区别