iOS学习(C语言)知识点整理

一、数据结构

1)概念:数据结构是指计算机程序中所操作的对象——数据以及数据元素之间的相互关系和运算。

2)结构体必须有struct 关键字修饰.

实例代码:

 struct Person{
char name[];
int age;
float height;
}; int main(){
struct Person Tom={"Tom",,};//struct Person 是数据结构
//Tom 是变量名
Tom.age=;//通过点号访问成员变量
printf("姓名=%s;年龄=%d;身高=%.2f\n",Tom.name,Tom.age,Tom.height);
return ;
}

3)使用typedef 修饰结构体,与不使用typedef修饰的结构体的区别在于,typedef修饰的结构体不需要再加struct即可使用。

实例代码:

 typedef struct Person{
char name[];
int age;
float height;
}stPerson; int main(){
stPerson Jack={"Jack",,};//struct stPerson 是数据结构
//Jack 是变量名
Jack.age=;//通过点号访问成员变量
printf("姓名=%s;年龄=%d;身高=%.2f\n",Jack.name,Jack.age,Jack.height);
return ;
}

4)结构体集合的使用

实例代码:

 int main(){
//定义了一个数组,里面可以放stPerson这种数据类型
stPerson stu[]={};
stPerson *pstu;
printf("%s",stu[].name);
for (int i=; i<; i++) {
sprintf(stu[i].name, "Jack%d",i);
stu[i].age=+i;
stu[i].height=+i;
}
pstu=stu;
//(*pstu).name等价于 pstu->name;
//pstu+i 指向里面的第i个元素
//指针通过->去访问指向的对象的成员变量
int len=sizeof(stu)/sizeof(stPerson);
for(int j=; j<len; j++) {
printf("姓名=%s;年龄=%d;身高=%.2f\n",(*pstu).name,(*pstu).age, (*pstu).height);
pstu++;
}
return ;
}

5)结构体字节对齐  #pragma pack(n)  n可为1,2,4,8,16;设置系统对齐模数,按结构所有成员中最大者和对齐模数比较,与较小者对齐

实例代码:

 typedef struct
{
char ch[];//单字节对齐
}aa; typedef struct
{
char ch[];
short b;//2字节对齐
}ab; typedef struct
{
char ch[];
short b;
int c;//按照4字节对齐
}ac; typedef struct
{
char ch[];
short b;
int c;
long l;//按照8字节对齐
}ad; typedef struct
{
char ch;
long l;
}ae; int main()
{
printf("sizeof(aa)=%lu\n",sizeof(aa));//
printf("sizeof(ab)=%lu\n",sizeof(ab));//
printf("sizeof(ac)=%lu\n",sizeof(ac));//
printf("sizeof(ad)=%lu\n",sizeof(ad));//
printf("sizeof(ae)=%lu\n",sizeof(ae));//
return ;
}

6)枚举  概念:一个被命名的整型常数的集合,枚举声明的关键字是 enum

注意点:

1、枚举元素之间用 “,”分隔

2、枚举第一元素如果没有赋值默认值为0,之后的元素依次加1

3、枚举是 unsigned int 类型的包装集合。

4、枚举都是常量,与宏#define相似

5、枚举的名字不能重名

实例代码:

 enum weekday
{
Monday,
Tuesday,
Wednesday=,//可以人为赋值,后面在此基础+1
Thurday,
Friday=,//后面的赋值可以比前面小
Saturday,
Sunday
}; int main()
{
enum weekday day= Saturday;//enum weekday 数据类型,day变量名
printf("day=%u,sizeof(day)=%lu\n",day,sizeof(day));//结果:6,4
}

7)typedef 用法说明;typedef 老的类型 新的名字 ,给类型取个别名

实例代码:

 typedef unsigned long ul;
typedef int *intp;
int add(int a,int b){
return a+b;
} //给这种函数指针取了一个新名字 pfunc
typedef int (*pfunc)(int,int);
int main()
{
ul number= ;
int a = ;
intp p = &a;
pfunc pf = add;
printf("number=%lu\n",number);
printf("*p=%d\n",*p);
printf("add=%d\n",pf(,));
return ;
}

8)结构联合体,一般联合体都是二选一,即联合体中一般只会存在两个元素,系统在初始化时只会选择其中一个内存较大的进行赋值。

实例代码:

 typedef struct Person// Person可以省略,后面之用简化的名字
{
char name[];//成员变量
int age;
int height;
union{
int stuid;
char workname[];
};//共享同一段内存,按情况去解析.
//内存大小按大的计算
//初始化的时候,按照第一个解析
}stPerson; int main()
{
stPerson xiaoli={"xiaoli",,,};
stPerson xiaozhu={"kingkong",,,};
//初始化的时候,不能给最后一个成员变量赋值为字符串
printf("sizeof(stPerson)=%lu\n",sizeof(stPerson));
printf("name:%s,age:%d,height:%d,stuid:%d\n",xiaoli.name,xiaoli.age,xiaoli.height,xiaoli.stuid); //给名字字段赋值
sprintf(xiaozhu.workname,"%s","kingkong");
printf("name:%s,age:%d,height:%d,workname:%s\n",xiaozhu.name,xiaozhu.age,xiaozhu.height,xiaozhu.workname);
return ;
}

iOS 阶段学习第十天笔记(结构体)的更多相关文章

  1. iOS 阶段学习第十天笔记(字符串操作)

    iOS学习(C语言)知识点整理 一.字符串的操作 1)字符串的存储,字符数组,在堆里面申请内存空间. 实例代码: #include <stdlib.h> #include <stri ...

  2. iOS阶段学习第15天笔记(NSDictionary与NSMutableDictionary 字典)

    iOS学习(OC语言)知识点整理 一.OC中的字典 1)字典:是一个容器对象,元素是以键-值对(key-value)形式存放的,key和value是任意类型的对象,key是唯一的,value可以重复 ...

  3. iOS阶段学习第四天笔记(循环)

    iOS学习(C语言)知识点整理笔记 一.分支结构 1.分支结构分为单分支 即:if( ){ } ;多分支 即:if( ){ }else{ }  两种 2.单分支 if表达式成立则执行{ }里的语句:双 ...

  4. iOS阶段学习第三天笔记(运算符)

    iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...

  5. iOS 阶段学习第四天笔记(循环)

    iOS学习(C语言)知识点整理笔记 一.分支结构 1.分支结构分为单分支 即:if( ){ } ;多分支 即:if( ){ }else{ }  两种 2.单分支 if表达式成立则执行{ }里的语句:双 ...

  6. iOS 阶段学习第三天笔记(运算符)

    iOS学习(C语言)知识点整理笔记 1.运算符 一.算术运算符 1)表达式由变量.常量.运算符构成,有确定的类型和值 2)算术运算符包括: +(加),-(减),*(乘),/(除),%(模) 3)算术运 ...

  7. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  8. iOS 阶段学习第七天笔记(函数、递归)

     iOS学习(C语言)知识点整理笔记 一.函数 1)概念:具有特定功能的代码块的封装 2)函数的定义: 函数类型+函数名(形参列表) 函数类型 函数名(形参类型1  形参名1,形参类型2   形参名2 ...

  9. iOS阶段学习第34天笔记(UI小组件 UISegment-UISlider-UIStepper-UIProgressView-UITextView介绍)

    iOS学习(UI)知识点整理 一.UI小组件 1.UISegmentedControl 分段选择器  实例代码 - (void)viewDidLoad { [super viewDidLoad]; / ...

随机推荐

  1. 基于Css反射形自触发事件,优化你的延时事件

    昨天听w3ctech分享时候,说道orientationchange在不同OS和版本中,存在兼容问题,很多时候触发时候都没有渲染结束,开发同学一般都是基于setTimeout一段时间之后,在去执行具体 ...

  2. HTML学习入门

    HTML(元素.属性) HTML: 超文本标记语言   1. 超文本即为带有链接属性的文本  2.标记即为标签 一.body属性: bgcolor:页面背景颜色 text:文字颜色 backgroun ...

  3. 基础才是重中之重~Data层如何调用BLL层的方法,如果觉得奇怪请看本文章

    回到目录 看似不伦不类 这个题目有点不伦不类,或者说有点伪模式了,不错,确实是这样,我们正确的开发思维是WEB层->BLL层->DATA层,每个层有对它下层的引用,下层不能引用上层,因为这 ...

  4. Java程序员的日常 —— 响应式导航Demo

    这两天想要做响应式的页面,于是本着重复造轮子的想法,模仿Bootstrap官网,精简了一个响应式导航的Demo. 效果 代码 <!DOCTYPE html> <html> &l ...

  5. vs如何在C++中调用Lua

    最近Cocos2dx的学习卡壳了,一般的照抄代码我不想写上来,但想示例也想得我头晕...为了放松大脑调整状态于是开始学习Lua.Lua的语法学习还是比较简单的,学过javascript或者vbscri ...

  6. 关于Lua优质文章链接

    Lua 语言 15 分钟快速入门(博客-伯乐在线) http://blog.jobbole.com/70480/

  7. Atitit 泛型原理与理解attilax总结

    Atitit 泛型原理与理解attilax总结 1. 泛型历史11.1.1. 由来11.2. 为什么需要泛型,类型安全21.3. 7.泛型的好处22. 泛型的机制编辑22.1.1. 机制32.1.2. ...

  8. sql分组(orderBy、GroupBy)获取每组前一(几)条数据

    sql数据库实现分组并取每组的前1(几)条数据 测试数据准备工作: 根据某一个字段分组取最大(小)值所在行的数据: 创建表并且插入数据 ),Val )) , 'a1--a的第一个值') , 'b2b2 ...

  9. 类的继承和多态性-编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 getLegs(),设置动物名称的方法 setKind(),获得动物名称的方法 getKind(),获得动物数量的方法 getCount()。定义Fish类,是Animal类的子类,

    编写Java应用程序,定义Animal类,此类中有动物的属性:名称 name,腿的数量legs,统计动物的数量 count;方法:设置动物腿数量的方法 void setLegs(),获得腿数量的方法 ...

  10. TSQL 去除重复值

    数据去重主要分为两种情况:第一种是保证Select的全部列无重复:第二种是select的部分字段无重复,而其他字段取特定值. 1,对select的全部字段去重,直接使用distinct 函数 2,对s ...