本文目录
一、typedef作用简介
二、typedef与指针
三、typedef与结构体
三、typedef与指向结构体的指针
四、typedef与枚举类型
五、typedef与指向函数的指针
六、typedef与#define
说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略
这讲介绍C语言中很常用的一个关键字---typedef。
回到顶部
一、typedef作用简介
* 我们可以使用typedef关键字为各种数据类型定义一个新名字(别名)。
复制代码
1 #include 2 3 typedef int Integer; 4 typedef unsigned int UInterger; 5 6 typedef float Float; 7 8 int main( int argc, const char * argv[]) { 9 Integer i = - 10 ; 10 UInterger ui = 11 ; 11 12 Float f = 12.39f ; 13 14 printf( " %d %d %.2f " , i, ui, f); 15 16 return 0 ; 17 }
复制代码
在第3、第4、第6行分别给int、unsigned int、float起了个别名,然后在main函数中使用别名定义变量,用来跟原来的基本类型是完全一样的。输出结果:
当然,给类型起别名后,原来的int、float还是可以正常使用的:
int i = 10;float f = 10.0f;
* 也可以在别名的基础上再起一个别名
typedefint Integer;typedefIntegerMyInteger;
回到顶部
二、typedef与指针
除开可以给基本数据类型起别名,typedef也可以给指针起别名
复制代码
1 #include 2 3 typedef char * String; 4 5 int main( int argc, const char * argv[]) { 6 // 相当于char *str = "This is a string!"; 7 String str = " This is a string! " ; 8 9 printf( " %s " , str); 10 11 return 0 ; 12 }
复制代码
在第3给指针类型char *起别名为String,然后在第7行使用String定义了一个字符串,是不是有点Java的感觉?
回到顶部
三、typedef与结构体
给结构体起别名可以使代码更加简洁明
1.默认情况下结构体变量的使用
复制代码
1// 定义一个结构体 2struct MyPoint { 3float x; 4float y; 5}; 6 7int main(int argc, constchar * argv[]) { 8// 定义结构体变量 9structMyPoint p;10 p.x = 10.0f;11 p.y = 20.0f;1213return0;14 }
复制代码
默认情况下,我们定义结构体变量需要带个struct关键字,看第9行
2.使用typedef给结构体起别名
复制代码
1// 定义一个结构体 2struct MyPoint { 3float x; 4float y; 5}; 6 7// 起别名 8typedefstruct MyPointPoint; 910int main(int argc, constchar * argv[]) {11// 定义结构体变量12 Point p;13 p.x = 10.0f;14 p.y = 20.0f;1516return0;17 }
复制代码
我们在第8行给结构体MyPoint起了个别名叫做Point,然后在12行使用Point定义了一个结构体变量p,不用再带上struct关键字了
其实第1~第8行的代码可以简写为:
// 定义一个结构体,顺便起别名typedefstruct MyPoint { float x; float y;} Point;
甚至可以省略结构体名称:
typedefstruct { float x; float y;} Point;
回到顶部
三、typedef与指向结构体的指针
typedef可以给指针、结构体起别名,当然也可以给指向结构体的指针起别名
复制代码
1 #include 2 3 // 定义一个结构体并起别名 4 typedef struct { 5 float x; 6 float y; 7 } Point; 8 9 // 起别名 10 typedef Point * PP; 11 12 int main( int argc, const char * argv[]) { 13 // 定义结构体变量 14 Point point = { 10, 20 }; 15 16 // 定义指针变量 17 PP p = & point; 18 19 // 利用指针变量访问结构体成员 20 printf( " x=%f,y=%f ", p->x, p-> y); 21 return 0 ; 22 }
复制代码
在第4行定义了一个结构体,顺便起了个别名叫Point,第10行为指向结构体的指针定义了别名PP。然后在main函数中使用这2个别名。
输出结果: |
|