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. ...
随机推荐
- java成员变量与局部变量修饰符的区别
成员变量: 可以被 public,static ,protected,default,final修饰. 局部变量:包括方法里的和 代码块里的(静态和非静态) 可以被default, final修饰 参 ...
- 文件浏览器及数码相框 -2.3.2-freetype_arm-2
显示多行文字 两行文字左边对齐 简单使用两个循环显示两行字体 根据上一行字体的宽度来进行下一行左边的计算 #include <sys/mman.h> #include <sys/ty ...
- Xcode6中segue取消原push与modal(deprecated)
xcode6 之后push 和modal 就被废弃了.只能用于ios8之前.在拖线的时候我们就可以看见. 这两个方法被废弃了,我们需要找到合适的方法来代替,这时候我们发现 show 和Present ...
- Spring学习笔记之方法注入
public abstract class ReplacedBean {protected static final Log log = LogFactory.getLog(ReplacedBean ...
- 原子操作 Interlocked系列函数
上一篇<多线程第一次亲密接触 CreateThread与_beginthreadex本质区别>中讲到一个多线程报数功能.为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是 ...
- Twitter CEO:有望进军中国 不会改变原则
新浪科技讯 8月12日下午消息,据台湾“中央社”报道,Twitter CEO科斯特洛(Dick Costolo)日前接受<日经新闻>专访时指出,Twitter有望进军中国大陆,科斯特洛表示 ...
- load get selectone 或者selectlist 以及hql查询语句不用提交事务
提交事务是么有必要的 而且有时候subselect batchsize 会失效
- 《day17_String_StringBuffer》
package cn.itcast.api.string; public class StringDemo{ public static void main(String[] args){ //定义一 ...
- ArrayList的使用方法【转载】
*** Source URL: http://i.yesky.com/bbs/jsp/view.jsp?articleID=889992&forumID=150 *** 1.什么是ArrayL ...
- Comments
Nothing can be quite so helpful as a well-placed comment.Nothing can clutter up a module more than f ...