首页 > 代码库 > iOS学习笔记---c语言学习第七天
iOS学习笔记---c语言学习第七天
结构体
结构体是一种自定义的数据类型
struct 结构体名
{
类型说明符 成员名;
…
类型说明符 成员名;
};
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ struct teacher{ char name[30]; char sex; int age; char course[30]; }; typedef struct teacher Teacher; Teacher cui={"cui",‘m‘,18,"language c"}; struct cup{ float price;//价格 int capacity;//容量 char corlor[20];//颜色 }; typedef struct cup Cup; Cup fuguang={10.5,500,"black"}; return 0;}
结构体变量定义
由结构体类型修饰的变量叫做结构体变量
struct 结构体名 变量名={初值};
struct student stu1 = {1,“zhangsan”,‘m’,70};
结构体成员的访问
结构体变量名.成员变量名
eg:stu1.num//stu1的学号
注:结构体成员变量与普通变量一样,可以赋值
eg:stu1.num//stu1的学号
注:结构体成员变量与普通变量一样,可以赋值
匿名结构体
结构体声明与变量的定义结合在一起
eg:struct{?
int num;?
char name[20];? char sex;? float score;?
}
stu1 = {1,”wukong”, ‘m’,99.5f},
stu2 = {2, “bajie”, ‘m’, 65.0f};
int num;?
char name[20];? char sex;? float score;?
}
stu1 = {1,”wukong”, ‘m’,99.5f},
stu2 = {2, “bajie”, ‘m’, 65.0f};
// struct cup{// float price;//价格// int capacity;//容量// char corlor[20];//颜色// };// typedef struct cup Cup; //定义结构体的同时就起别名。// typedef struct cup{// float price;//价格// int capacity;//容量// char corlor[20];//颜色// } Cup;
练习:有三个学生,变成找出分数最高者以及年龄最小者。
typedef struct students{ char name[40]; int age; float score; } Students; Students s1={"zhangsan",28,89}; Students s2={"lisi",26,95}; Students s3={"wangwu",21,76}; Students max = {0}; max = s1.score>s2.score?s1:s2; max = max.score>s3.score?max:s3; printf("%s的分数最高\n",max.name); Students min = {0}; min = s1.age<s2.age?s1:s2; min = min.age<s3.age?min:s3; printf("%s的年龄最小",min.name);
结构体空间占用
以最大成员变量类型所占空间为分配单位i按结构体成员声明顺序由上而下分配
注:分配空间不足以存储成员变量时,分配新的空间单位
结构体嵌套
结构体的成员依然可以是结构体
typedef struct date{? int year;?
int month;?
int day; } MyDate;
struct student{?
char name[20];?
MyDate birthday;//stu1.birthday.year;
};
结构体数组
将多个结构体变量放到数组中,构成结构体数组
eg:struct student students[10]={0};
//练习用结构体数组做 typedef struct date{ int year; int month; int day; } MyDate; typedef struct students{ char name[40]; int age; float score; MyDate birthday; } Students; Students stus[3]={ {"zhangsan",28,89,{1989,5,18}}, {"lisi",26,95,{1990,10,9}}, {"wangwu",21,76,{1992,5,4}} }; Students min= stus[0]; for (int i = 1; i<3; i++) { if (min.age>stus[i].age) { min = stus[i]; } } printf("%s\n",min.name); Students max = stus[0]; for (int i=1; i<3; i++) { if (max.score<stus[i].score) { max = stus[i]; } } printf("%s",max.name);
对上述学生成绩从大到小排序
for (int i=0; i<2; i++) { for (int j=0; j<2-i; j++) { if (stus[j].score>stus[j+1].score) { Students temp=stus[j]; stus[j]=stus[j+1]; stus[j+1]=temp; } } } for (int i=0; i<3; i++) { printf("%s %d %.2f\n",stus[i].name,stus[i].age,stus[i].score); }
排序写到函数内
typedef struct date{ int year; int month; int day;} MyDate;typedef struct students{ char name[40]; int age; float score; MyDate birthday; } Students;void bobbleSart(Students s[],int count){ for (int i=0; i<count-1; i++) { for (int j=0; j<count-1-i; j++) { if (s[j].score>s[j+1].score) { Students temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; } } }}
总结
结构体是一种比较灵活的数据结构类型,并且与oc要学的类很相似
结构体和数组的互相嵌套可以实现比较复杂 的数据结构
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。