iOS学习笔记---c语言学习第七天
结构体
结构体是一种自定义的数据类型
struct 结构体名
{
类型说明符 成员名;
…
类型说明符 成员名;
};
#import <Foundation/Foundation.h> int main(int argc, const char * argv[])
{ struct teacher{
char name[];
char sex;
int age;
char course[];
};
typedef struct teacher Teacher;
Teacher cui={"cui",'m',,"language c"};
struct cup{
float price;//价格
int capacity;//容量
char corlor[];//颜色
};
typedef struct cup Cup;
Cup fuguang={10.5,,"black"};
return ;
}
结构体变量定义
eg:stu1.num//stu1的学号
注:结构体成员变量与普通变量一样,可以赋值
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[];
int age;
float score; } Students;
Students s1={"zhangsan",,};
Students s2={"lisi",,};
Students s3={"wangwu",,};
Students max = {};
max = s1.score>s2.score?s1:s2;
max = max.score>s3.score?max:s3;
printf("%s的分数最高\n",max.name);
Students min = {};
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[];
int age;
float score;
MyDate birthday; } Students; Students stus[]={
{"zhangsan",,,{,,}},
{"lisi",,,{,,}},
{"wangwu",,,{,,}}
};
Students min= stus[];
for (int i = ; i<; i++) {
if (min.age>stus[i].age) {
min = stus[i];
}
}
printf("%s\n",min.name);
Students max = stus[];
for (int i=; i<; i++) {
if (max.score<stus[i].score) {
max = stus[i];
}
}
printf("%s",max.name);
对上述学生成绩从大到小排序
for (int i=; i<; i++) {
for (int j=; j<-i; j++) {
if (stus[j].score>stus[j+].score) {
Students temp=stus[j];
stus[j]=stus[j+];
stus[j+]=temp;
}
}
}
for (int i=; i<; 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[];
int age;
float score;
MyDate birthday; } Students;
void bobbleSart(Students s[],int count)
{
for (int i=; i<count-; i++) {
for (int j=; j<count--i; j++) {
if (s[j].score>s[j+].score) {
Students temp=s[j];
s[j]=s[j+];
s[j+]=temp;
}
}
} }
总结
结构体是一种比较灵活的数据结构类型,并且与oc要学的类很相似
结构体和数组的互相嵌套可以实现比较复杂 的数据结构
iOS学习笔记---c语言学习第七天的更多相关文章
- IOS学习笔记07---C语言函数-printf函数
IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用
目录 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用 21.1 read命令键盘读取变量的值 21.1.1 read常用见用法及参数 21.2 流程控制语句if 21.2 ...
- 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧
目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...
- 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环
目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...
- 学习笔记:CentOS7学习之二十:shell脚本的基础
目录 学习笔记:CentOS7学习之二十:shell脚本的基础 20.1 shell 基本语法 20.1.1 什么是shell? 20.1.2 编程语言分类 20.1.3 什么是shell脚本 20. ...
随机推荐
- 原生JS 添加或者删除某个class
$S.addHandler($S.getId(fav[i]),'mouseover',function(){ this.className += " " ...
- wdcp升级php版本到5.3,5.5
官网省级方法 wget http://down.wdlinux.cn/in/php_up53.shsh php_up53.sh 看到"php update is OK"提示表示,顺 ...
- Python中通过多个字符分割(split)字符串的方法
python中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割 import re re.split('-|_','sharejs_ha ...
- IT公司100题-12-求1+2+…+n
问题描述: 求1+2+…+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). 分析: 利用类的静态变量实现: new一含有n ...
- java枚举类
enum关键字用于定义枚举类,若枚举只有一个成员, 则可以作为一种单例模式的实现方式. 枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰. 枚举类的使用 priva ...
- Python应用与实践
http://www.cnblogs.com/skynet/archive/2013/05/06/3063245.html
- [转]理解WSRF之一 使用WS-ResourceProperties (整理自IBM网站)
理解 WSRF第1部分-使用 WS-ResourceProperties 本 教程是一个由 4 部分组成的系列文章中的第 1 部分,该系列介绍 WSRF(Web Services Resource ...
- idea常用快捷键大全(转)
IntelliJ Idea 常用快捷键列表 文章来自:http://lavasoft.blog.51cto.com/62575/97730/ Alt+回车 导入包,自动修正Ctrl+N 查 ...
- C++ primer的第一章的主要内容
第一章主要是把C++的主要的部分简单的介绍了一下,让读者对C++开始有一个简单的了解.看完第一章的收获就是知道如何去读入不确定数目的输入,主要是形式是:whlie(cin>>s){},利用 ...
- 2013年7月份第3周51Aspx源码发布详情
批量重命名文件工具源码 2013-7-19 [VS2010]功能介绍:这是一个新型的文件重命名,主要用了TreeView(树形视图)来选择文件夹,批量进行文件重命名.其中,有"编号在前,编 ...