结构体 枚举 typedef

来源:互联网 发布:淘宝客手机版插件 编辑:程序博客网 时间:2024/05/29 18:11

IOS学习第15天

结构体

  • 结构体数组
1.结构体数组的声明    struct 结构体名字 数组名[数组长度];    struct Student students[5];2.结构体数组的初始化:(赋值)    1>静态初始化:定义的同时赋值    struct Student students[] = {        {"小明",18},        {"xiaohong",20},        {"xiaoxxx",30},        {},        {}    };    2>动态初始化:先定义后初始化    struct Student students[5];    //只有一种方式:挨个赋值    students[0] = {};    students[1] = {};3.结构体数组的长度计算:(长度:数组中的元素的个数)    sizeof(数组名)/sizeof(元素的数据类型);    sizeof(students)/sizeof(struct Student);    ```* 结构体指针

1.声明格式
xxx aa;
xxx* p_aa = &aa;
struct 结构体名字 变量名;

struct 结构体名字 * p_aaa = &变量名;

2.怎么给结构体指针赋值
struct 结构体名字 * p_aa;
p_aa = & 结构体变量名;

3.结构体指针怎么使用?**
struct Student
{
char * name;
int age;
};//结构体类型
//定义了一个结构体变量
struct Student xiaoming;
//定义了一个结构体指针
struct Student * p_xiaoming = &xiaoming;
如何通过结构体指针 给结构体变量赋值
1>
(*p_xiaoming).name = “小明”;
(*p_xiaoming).age = 18;

2>指针可以直接访问成员变量p_xiaoming->name = "小红";p_xiaoming->age = 18;

注意:数组名是一个地址,首元素的地址
函数名是一个地址,函数在内存中的首地址
结构体变量名,不是一个地址,要获取结构体变量的地址 &结构体变量名

“小练习:
定义一个 dog 类型, 年龄 颜色
struct Dog{
//成员变量
int age;
char * color;
};
定义一个结构体指针,指向一个狗的变量,并且赋值
struct Dog wangcai;
//结构体指针 指向了 wangcai这个结构体
struct Dog * p_wangcai = &wangcai;
//通过结构体指针 给 结构体的成员变量赋值
p_wangcai->age = 200;
p_wangcai->color = “土豪金”;
“`
* 结构体嵌套

1,用1个变量来保存1个人.    姓名    年龄    出生日期    家产    日期:    年 int    月 int    日 int    struct Date    {        int year;        int month;        int day;    };    struct Person    {        char* name;        int age;        double money;        //出生日期.        struct Date birthday;    };2."练习// 一个学生,有姓名,学号,3门课程(语文,数学,英语),每门课程都有课程名称和分数    //学生:姓名,学号,三门课程    //每一门课程:课程名称 ,分数    //课程的结构体    struct KeCheng{        char * kcName;        float score;    };    //学生的结构体    struct Student{        char * name;//姓名        int sno;//学号        struct KeCheng kechengs[3];//        struct KeCheng kecheng2;//        struct KeCheng kecheng3;    };    //试一下给 小明结构体变量赋值    struct Student xiaoming;    xiaoming.name = "小明";    xiaoming.sno = 10086;    xiaoming.kechengs[0] = (struct KeCheng){"语文",100};    xiaoming.kechengs[1] = (struct KeCheng){"英语",200};    xiaoming.kechengs[2] = (struct KeCheng){"数学",120};    //    printf("名字是%s,学号是%d,%s的成绩是%d",xiaoming.name,xiaoming.sno,xiaoming.kechengs[0].keName,xiaoming.kechengs[0].score);    ```* 结构体与函数1.结构体作为函数的参数(1)结构体作为参数传值是值传递(2)如果你就是希望函数的内部可以修改实参结构体变量的值,那么就要使用指针2.结构体作为函数的返回值(1)在返回的时候,直接将这个结构体变量的值返回即可(2)如果你要返回结构体变量的地址,那么就要把这个结构体变量创建在堆区###枚举变量

1.什么时候要定义枚举类型?
有一个变量,要求这个变量 只能取值 几种情况之一

2.如何创建一个枚举类型
enum 枚举名字{
//可能的几种情况
情况1,
情况2,
情况3,

};

3.声明枚举类型的变量
//苹果官方 关于C中的枚举的命名规范,以k开头 后面的单词首个字母大写
//OC中的枚举,以相应的枚举名开头
enum Sex{
kMan,
kFemale,
kYao
};
enum Sex s1;//s1就是一个枚举变量

4.枚举变量的初始化
enum Sex s2 = kMan;

pragma mark - 18 [了解]枚举值所对应的整型的数

1.枚举的作用域
全局枚举
局部枚举
建议:一般写在文件的最上面,好让所有的函数可以访问

2.每1个枚举值/枚举项 都有1个对应的整型的数.
默认是从0开始,往后一次递增1

3.能不能直接为枚举变量赋值1个整型的数据.
可以,但是人类看不懂,所以不建议这么写

4.还可以手动指定,每一个枚举值对应的整型数据
enum Direction
{
East = 10,
South = 20,
North = 40,
West
};

pragma mark - 19 [了解]枚举的使用规范

1.定义枚举类型的时候
枚举妹名字 首个字母大写,如果由多个单词组成,那么每一个单词的首个字母都大写

2.枚举值/枚举项的命名
一般都是k开头
也可以是 枚举名字开头
enum WX{
WXJin,
WXMu,
WXShui,
WXHuo,
WXTu
};
“`

typedef

  • 使用typedef将枚举类型和结构体类型取一个短别名

“`
1. 使用typedef为结构体类型取别名.(常用)
1>先声明,后起别名
struct Student
{
char *name;
int age;
int score;
};
typedef struct Student Student;
2>声明的同时起别名
typedef struct _Student
{
char *name;
int age;
int score;
}Student;

3>匿名结构体起别名typedef struct{    char *name;    int age;    int score;}Student;

2,使用typedef为枚举类型取1个短别名

1>先声明,后起别名    enum Direction    {        DirectionEast,        DirectionSouth,        DirectionWest,        DirectionNorth    };typedef enum Direction Direction;2>声明的同时起别名typedef enum _Direction{    DirectionEast,    DirectionSouth,    DirectionWest,    DirectionNorth}Direction;3>匿名枚举起别名typedef enum{    DirectionEast,    DirectionSouth,    DirectionWest,    DirectionNorth}Direction;```
0 0
原创粉丝点击