本帖最后由 maoxiaomi 于 2015-7-13 17:54 编辑
十九、指针
14、 指针函数 :类型说明符 *函数名(形参表){函数体};
15、 函数指针
1)定义指向函数的指针变量,返回值类型说明符 (*变量名)(函数的参数);
2)初始化函数指针:变量名=函数名(返回值类型、参数个数和类型都必须相同,定义时可以不写形参名)。
3)函数指针可以清晰的调用不同函数,函数指针运算无意义。
二十、构造类型和结构(structure)体
1、构造类型:是根据已定义的一个或多个数据类型用构造的方法来定义新的类型(数组类型、结构体类型、共用体类型);
2、结构体:由若干类型数据用构造的方法构造,struct 结构名 {成员列表};
1)结构体定义:struct 结构名 {成员列表};,结构体定义不分配内存,定义结构体变量后才可以分配使用;
2)结构体变量定义:struct 结构名 {成员列表};struct 结构名 变量名1、变量名2、……;
3)可以同时定义:struct 结构名 {成员列表}变量名1、变量名2、……;,这种方式可以省略结构名匿名定义;
4)结构体变量初始化:
A、先定义后初始化,结构体变量名.成员名=数据;(注字符串可用strcpy);
B、定义同时初始化, struct 结构名 变量名= {数据1,数据2,……};
C、定义同时指定元素初始化,struct 结构名 变量名= {.成员名=数据};
5)结构体存储大小:因结构体存储原理要考虑对齐补位问题
6 )结构体的作用域同变量的作用域
3、结构体数组 :结构数组的每一个元素都具有相同结构类型的下标结构变量。
1)定义格式:struct 结构名{成员表列} 数组名 [数组长度] ;
2)初始化和遍历:综合结构体和数组的初始化及遍历,字符数组也可用scanf初始化;
4、指向结构体变量的指针:
1)struct 结构名 *结构指针变量名 ;,存放结构体变量的地址;
2)间接访问结构体:(*指针名).成员名 或指针名->成员名
5、结构体嵌套:结构体内可以有其他的结构体变量或自己类型的指针(不能使自己的变量)。
6、结构体变量及成员值与结构体指针作为函数形参
1)结构体成员值做函数参数是值传递;
2)结构体变量做函数参数是所有成员值传递;
3)结构体指针作为函数参数是地址传递。
|
|