c语言 -- typedef与#define

typedef#define

	typedef int* point;
	#define int INT

typedef是一种彻底的封装类型——在声明它之后不能再往里面增加别的东西。主要体现在两方面:

/* 1.不能用其他类型说明符进行扩展*/
	unsigend point j; //这是非法的!
	unsigned INT i;	  // 没问题,i是指向无符号整型变量的指针
	
	/*2.在连续几个变量的声明中,#define定义的类型不能保证所有的变量为同种类型*/
	point a, b; // a和b都是指向整型变量的指针
	INT c, d;   // c是整型变量指针,d是整型变量
	

typedef关键字:给类型定义一个新名字

a. typedef int INT; //INT就是int的新名字,如INT a;
	
b. typedef int array[5]; //array就是整型数组类型int [5]的新名字,如array a;//等价于int a[5];
    
c. typedef int* p; //p就是整型指针类型int* 的新名字,如p pitr;//等价于int *pitr;
    
d. typedef void (*sighandler_t)(int); //sighandler_t就是函数指针void (* )(int)的新名字,如sighandler_t handler;//等价于void (*handler)(int);
	
e. typedef void __signalfn_t(int); //相当于typedef void ()(int) __signalfn_t;
    
f. typedef __signalfn_t *__sighandler_t; // 相当于typedef void (* )(int) __sighandler_t;
	
g. typedef struct infor{}STU,*STUP;//STU就是结构体struct infor的别名,如STU stu;//等价于struct stu{…};而STUP stu是结构体struct infor*的别名,stu是一个结构体指针。

试分析下列声明:

typedef void (*sighandler_t)(int);
	
sighandler_t signal(int signum, sighandler_t handler);
//signal带两个参数,一个是int型参数,另一个是函数指针类型,signal函数返回值是一个函数指针,该函数指针是一个地址,所以signal是指针函数类型。
/*等价于=>void (*signal(int signum,void(* handler)(int)))(int)*/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值