首页 > 代码库 > 常见关键字用法(struct,typedef)
常见关键字用法(struct,typedef)
一、结构体sturct语法基础:
/*结构体说明:1、结构体是一种构造数据类型,将不同类型的数据组合成一个整体2、结构体定义: struct 结构体名 { 类型标识符 成员名; };3、struct是关键字,不能省略;结构体名可以省略,无名结构体;成员类型可以是基本型或构造型;4、结构体变量的定义: (1)先定义结构体类型,在定义结构体变量: struct 结构体名 {类型标识符 成员名;}; struct 结构体名 结构体变量名; (2)定义结构体类型的同时定义结构体变量: struct 结构体名 {类型标识符 成员名;} 结构体变量名; (3)直接定义结构体变量(没有结构体名的无名结构体):struct {类型标识符 成员名;} 结构体变量名; 这样没有结构体名的,只能这样定义一次,也就是说不能再向(1)那样在后面随意定义了 5、结构体变量的引用: (1)结构体变量不能整体引用,只能引用变量成员 (2)结构体变量引用方式:结构体变量名.成员名 (3)例如 struct 结构体名 {类型标识符 成员1;} 结构体变量1,结构体变量2;这样,可以把一个变量赋值给另一个变量,如 结构体名.变量1=结构体名.变量1;6、结构体变量的初始化: (1)形式一:struct 结构体名 { 类型标识符 成员名;} ; struct 结构体名 结构体变量={初始数据}; (2)形式二:struct 结构体名 { 类型标识符 成员名;} 结构体变量={初始数据};7、结构体数组: (1)结构体数组就是,用一个数组来包括所有的结构体变量,数组的每个元素,就是一个结构体变量; (2)形式一:struct 结构体名 { 类型标识符 成员名;} ; struct 结构体名 结构体数组 (3)形式二:struct 结构体名 { 类型标识符 成员名;} 结构体数组; (4)形式三:struct { 类型标识符 成员名;} 结构体数组;8、结构体数组初始化:在前面的基础上加上初始变量组的各个成员 (1)形式一:用大括号将各个变量的一组成员括起来:结构体名 结构体数组名[]={ {成员1值1,成员2值1},{成员1值2,成员2值2}; (2)形式二:如果不加括号分开,那么按顺序排:结构体名 结构体数组名[]={成员1值1,成员2值1,成员1值2,成员2值2};9、结构体和指针 (1)指向结构体变量的指针 a.定义形式:struct 结构体名 *结构体指针名; b.使用结构体指针变量引用成员形式:(*结构体指针名).成员名 或者 结构体指针名->成员名 或者 结构体变量名.成员名 (2)指向结构体数组的指针 (3)用指向结构体的指针作函数参数 a.用结构体变量的成员作参数----值传递 b.用指向结构体变量或数组的指针作参数----地址传递 c.用结构体变量作为参数------多值传递,效率低*/
二、typedef语法基础:
/*typedef说明:1、typedef是C语言的关键字,作用是为一个数据类型定义一个新的数据类型,它并没有新建一种新的数据类型,只是把原有数据类型换了一个名字而已2、用法一:为现有的数据类型定义同义词,便于记住和归类使用等,格式:typedef 原有数据类型 定义新的名字;定义之后,可以在任何需要使用原数据类型处,用新的名字替换;例如:typedef int size; 以后就都可以用size来代替int;3、用法二:用来掩饰复合类型: a.数组,格式:typedef 原数据类型名 数组; 例如:typedef char line[81];以后line a, b; 就等价于 char a[88],b[88]; b.指针,格式:typedef const 原数据类型名 指针 ;例如:typedef char *pstr; 以后使用pstr就相当于char *;(只要是指针生命typedef,不管什么时候都需要在typedef中加一个const,以使得该指针本身是常量,而不是对象。4、用法三:在链表(struct)中的应用:格式:typedef struct {类型标识符,成员名 }结构名别名;例如:typedef struct { int a; int b;} MY_TYPE; 这样声明之后,以后如果需要定义结构就直接MY_TYPE tmp;tmp是满足这个结构的一个变量; 如果没有家typedef的话,后面直接定义肯定不能省略结构体名,定义的时候struct 结构体名 变量名,这样的形式来定义了*/
常见关键字用法(struct,typedef)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。