typedef的真正含意
来源:互联网 发布:搜狗输入法of mac下载 编辑:程序博客网 时间:2024/05/09 22:03
typedef的真正含意
2. 用你想申明的新类型名代替通用格式中的变化部分。例如这里就是用新类型int_array代替a,b,c所在的位置,再在前面加上typedef符号,即:
typedef int int_array[4];
3. 以后你想申明处在上面int_array位置的a,b,c类型时,就可以用如下语句:
int_array a, b, c;
Type_A object; 它的含义就是:你实际上申明的是用object名去替换<字符串>中的 Type_A 。
例如 typedef int int_array[4];
int_array object;
实际上你写的申明是:用object替换字符串" int int_array[4];"中的 int_array得到的结果: int object[4];
这也就是编译器处理tyepdef定义的原理。
char *cstr;//定义了一个char*变量cstr.
typedef char *cstr;//为char*起个别名cstr;
int int_array[10];//定义一个数组int_array.
typedef int int_array[10]//int_array变成了int[10]的别名.
void (*pfn)(void);//定义了一个函数指针.
typedef void (*pfn)(void);//为此函数指针起了个别名.
typedef int (*pf)();
pf test[10];
这样定义就是把pf作为一个“新”类型,是一个int型的函数指针类型。
所以,pf test[10];//这样就是定义了函数指针的数组,数组含10个元素。
<SCRIPT type=text/javascript><!--pub-7109050768300795google_ad_width = 300;google_ad_height = 250;google_ad_format = "300x250_as";google_ad_type = "text_image";google_ad_channel ="0380317428";google_color_border = "FFFFFF";google_color_bg = "FFFFFF";google_color_link = "0000FF";google_color_url = "008000";google_color_text = "000000";//--></SCRIPT>typedef到处都是,但是能够真正懂得typedef使用的不算太多。对于初学者而言,看别人的源码时对到处充斥的typedef往往不知所错,而参考书又很少,所以在此给出一个源码,供大家参考
<SCRIPT type=text/javascript><!--pub-7109050768300795google_ad_width = 300;google_ad_height = 250;google_ad_format = "300x250_as";google_ad_type = "text_image";google_ad_channel ="0380317428";google_color_border = "FFFFFF";google_color_bg = "FFFFFF";google_color_link = "0000FF";google_color_url = "008000";google_color_text = "000000";//--></SCRIPT>在typedef的使用中,最麻烦的是指向函数的指针,如果没有下面的函数,你知道下面这个表达式的定义以及如何使用它吗?
typedef只是对已经存在的类型增加一个类型名,没有创造新的类型;
typedef和#define虽然能起到类似的作用,但是两者不同,
#define属于预编译处理,typedef采用定义变量的方法定义一个类型;
当不同的源文件中使用同一类型数据时,常常吧它们单独存放在一个文件中,
然后在需要用到它们的时候,在文件中用#include命令包含进来;
使用typedef有益于程序的通用性和移植。
1、用其定义新的类型名代替已有的类型
用INTEGER代表int类型
即int i,j;可以用INTEGER i,j;来代替
2、定义结构体
{
int month;
int day;
int year;
}DATE;
新类型名DATE代表上面的结构体类型。
即DATE birthday;声明一个结构体。
DATE *p;//p为指向此结构体类型数据的指针
⑴
typedef int NUM[100];//定义NUM为整型数组类型
NUM xyz;//定义xyz为整型数组变量
⑵
typedef char *cs;//定义cs为字符串指针类型
cs p,s[10];//p为字符串指针变量,s为指针数组
⑶
typedef int (*ptr)();//定义ptr为指向函数的指针类型,该函数返回整型值
ptr p1,p2;//p1,p2为ptr类型的指针变量
--------------
附注:
㈠读代码用带入法来理解
typedef int NUM[100];//
NUM xyz;// 相当于 int xyz[100]; 在typedef中将NUM用变量名xyz代替
ptr p1;//相当于 int (*p1)(); 在typedef中将ptr用变量名p1代替
如果希望int xyz[100];
首先,一般性的描述 int NUM[100];
接着添加头,为typedef int NUM[100];
好处在于
int x[100],y[100],z[100];//不使用
NUM x,y,z;//使用
方便书写代码,并且方便修改程序,一处更新其他地方都更新
如果希望int (*x)();
首先,一般性的描述 int (*ptr)();
接着添加头,为typedef int (*ptr)();
好处在于
int (*x)(),(*y)(),(*z)();//不使用
ptr x,y,z;//使用
- typedef的真正含意
- typedef的真正理解
- 对typedef的真正理解
- 身份证号码位数的含意!
- 消息 前缀的含意
- latex中@的含意
- 关键字volatile的含意
- SIM卡编号的含意
- SIM卡编号的含意
- EXT中xtype的含意
- Adapter的含意,及用法
- Socket里listen函数的参数含意
- Socket里listen函数的参数含意
- SQL 中的COLLATE Chinese_PRC_CI_AS的含意
- HTTP请求头的具体含意
- HTTP请求头的具体含意[转]
- JAVA_OPTS各参数的含意及配置
- HTTP:HTTP请求头的具体含意
- 研究linux内核的目的
- 客户端更改Label值的问题
- java,javac,jar的各个参数的具体含义
- 获取系统当前日期
- 自己动手打造嵌入式Linux软硬件开发环境
- typedef的真正含意
- 创业鬼扯淡:这个世界上从来就没有市场广阔的好项目
- vmware workstation 6.0 下安装Solaris 10(3)
- 获取页面中的复选列表的方法
- 互联网史上最具影响力的50个人
- TCP握手协议
- volatile——多线程程序员最好的朋友volatile修正符及让你的编译器为你检查竞态条件
- 经典的重定位代码
- 身体是革命的本钱