typedef的用法好处及与#define的区别

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;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值