typdef的用法

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:22:25
typedef int (*SIG)();
//声明返回int 且无参函数的指针类型SIG
typedef void(*SINGARG)();
//声明无返回且无参函数的指针类型
SIG signal(int,SIGARG);
//声明的函数返回函数指针,其参数为整型和函数指针
=========================================
最后一句解释无法理解, 谁帮我详细讲讲
先谢谢了

SIG signal(int,SINGARG);//SINARG应该是手误写错了吧,应该是SINGARG
声明了一个函数,函数名是signal,参数有2个,第一个类型是int,第二个类型是SIGARG,函数的返回值的类型是SIG

上面通过typedef定义了SIG和SINGARG这2种类型,都是函数指针
SIG类型的变量可以指向形如int 函数名();的函数
SINGARG类型的变量可以指向形如void 函数名();的函数

根据这些举一个例子,例子本身没什么实际意义,纯粹为了举例而已

typedef int (*SIG)();
typedef void(*SINGARG)();

int rOne(){return 1;}
int rTwo(){return 2;}
int rThree(){return 3;}

void dOne(){printf("偷偷告诉你哦,我将输出1\n");}
void dTwo(){printf("偷偷告诉你哦,我将输出2\n");}
void dThree(){printf("偷偷告诉你哦,我将输出3\n");}

SIG signal(int,SINGARG);//声明

SIG signal(int index,SINGARG p) //直接把定义放这里
{
SIG sp;
int num=index%3+1;
switch(num)
{
case 1:
p=dOne;
p();
sp=rOne;
break;
case 2:
p=dTwo;
p();
sp=rTwo;
break;