typedef的用法好处及与#define的区别
#include "stdafx.h"
#if 0
----typedef的使用步骤:
typedef typer name; 起别名
1.先用要起别名的类型定义一个变量(如int a;)
2.在类型前加typedef(typedef int a;)
2.将上述定义的变量换成你要的名字,此名字即新类型(typedef int INT;)
//此时新类型名,等同于被起别名的类型
typedef int INT;
INT a;
//定义数组
typedef int ARRAY[10];
ARRAY arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
----起别名的好处之一,易跨平台
不同机器环境下的值大小不一定相同
char short int long
8 16 32 64
type char short int long
8 16 32 64 128
typedef type INT8;
typedef char INT16;
typedef short INT32;
typedef int INT64;
跨平台使用方便
----typedef不能存储关键字
typedef register int FAST_COUNTER; //错误
因为符号 typedef 已经占据了存储类关键字的位置,在 typedef 声明中不能用
register(或任何其它存储类关键字)
#endif
----俩者区别
typedef int INT; //typedef是c语言语句
#define INTD int //宏,预处理语句,在预处理阶段完成
//俩者区别主要体现在定义指针类型(也就是带*类型)上的不同
typedef char* CHARPT;
#define CHARPD char *
int _tmain(int argc, _TCHAR* argv[])
{
//----typedef与#define的区别:
INT a;
printf("sizeof(INT) = %d sizeof(a) = %d\n",
sizeof(INT), sizeof(a));
INTD b;
printf("sizeof(INTD) = %d sizeof(b) = %d\n",
sizeof(INTD), sizeof(b));
CHARPD p, q; //相当于 char* p,q 所以输出q为1
printf("sizeof(p) = %d sizeof(q) = %d \n", sizeof(p), sizeof(q));
CHARPT x, y; //typedef类型可以将俩个都赋值上为4
printf("sizeof(x) = %d sizeof(y) = %d \n", sizeof(x), sizeof(y));
return 0;
}