- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
C语言?typedef的用法示例详解
目录一、什么是typedef二、typedef用法1、对于数据类型使用例如:2、对于指针的使用例如3、对于结构体的使用三、进阶typedef1、数组指针2、指针函数3、Int*(*array[3])(int);4、Void(*funA(int,void(*funB)(int)))(int);四、Typedef与define
一、什么是typedef
typedef是在C和C++编程语言中的一个关键字。作用是为现有的数据类型(int、float、char)创建一个新的名字,目的是为了使代码方便阅读和理解。
二、typedef用法
1、对于数据类型使用例如:
typedef?int??NEW_INT;
以上就是给int起了一个新的名字NEW_INT,注意要加分号。当要定义int类型数据时就可以:
NEW_INTnum;
此时NEW_INTnum等同于intnum。
2、对于指针的使用例如
typedef?int??*PTRINT;
以上就是给int*起了一个新的名字NEW_INT。可定义int类型指针变量如:
PTRINTx;
此时PTRINTx等同于int*x。
例:
3、对于结构体的使用
在声明结构体时可为结构体和结构体指针起别名,如:
typedefstructNUM
inta;
intb;
}DATA,*PTRDATA;
此时DATA等同于structNUM,*PTRDATA等同于structNUM*。
定义结构体变量及指针可简化为:
DATAdata;//定义结构体变量
PTRDATApdata;//定义结构体指针
举个例子:
#includestdio.h
typedefstructNUM
inta;
intb;
}DATA,*PTRDATA;
intmain()
DATAdata;//定义结构体变量
PTRDATApdata;//定义结构体指针
pdata=data;//结构体指针指向结构体变量
data.a=100;
data.b=500;
printf(a=%d\nb=%d\n,data.a,data.b);
printf(a=%d\nb=%d\n,pdata-a,pdata-
return0;
}
运行结果:
三、进阶typedef
1、数组指针
int(*ptr)[3];
使用Typedef:
typedefint(*PTR_TO_ARRAY)[3];
例:
#includestdio.h
typedefint(*PTR_TO_ARRAY)[3];
intmain()
IntI;
Inttemp[3]={1,2,3};
PTR_TO_ARRAYptr_to_array;
ptr_to_array=temp;
for(i+0;ii++)
printf(%d\n,(*ptr_to_array)[i]);
return0;
}
2、指针函数
int(*fun)(void);
使用Typedef:
typedefint(*PTR_TO_FUN)(void);
3、Int*(*array[3])(int);
int*(*array[3])(int);
使用Typedef:
typedefint*(*PTR_TO_FUN)(int);
PTR_TO_FUNarray[3];
4、Void(*funA(int,void(*funB)(int)))(int);
void(*funA(int,void(*funB)(int)))(int);
void(*funA(参数))(int);
使用Typedef:
typedefvoid(*PTR_TO_FUN)(void);
PTR_TO_FUNfunA(int,PTR_TO_FUN);
四、Typedef与define
Typedef是起别名,define是替换。
例如:
typedefint*PTR;
PTRa,b;
此时a,b都是指针变量。
#definePTRint*
PTRa,b;
此时等同于
int*a,b;
只有a为指针变量,而b为整型变量。
文档评论(0)