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. [蓝牙] 5、Battery Service module

    Detailed Description This module implements the Battery Service with the Battery Level characteristi ...

  2. [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)

    目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...

  3. Oracle+Jsp分页

    分页原理: 从jsp页面传到servlet请求中,可以获得当前点击的页数,第一次进入为首页,通过在servlet中获得的当前页数,并且设计一次性显示的内容数,就是几条信息, 并且从dao层查询到数据库 ...

  4. Redis学习笔记~是时候为Redis实现一个仓储了,RedisRepository来了

    回到目录 之前写了不少关于仓储的文章,所以,自己习惯把自己叫仓储大叔,上次写的XMLRepository得到了大家的好评,也有不少朋友给我发email,进行一些知识的探讨,今天主要来实现一个Redis ...

  5. DDD~基础设施层~续

    回到目录 在之前写的DDD~基础设施层文章中,提到了UnitOfWork,它里面有一些方法,但经过项目证明,不应该有Save和IsExplicitSubmit,而这个工作单元只起到了数据上下文统一的作 ...

  6. 手把手教你搭建SpringMVC——最小化配置

    为什么需要Spring MVC 最开始接触网页的时候,是纯的html/css页面,那个时候还是用Dreamweaver来绘制页面. 随着网站开发的深入,开始学习servlet开发,记得最痛苦的就是se ...

  7. png图片尺寸大小调整

    Android 开发中经常遇到各种hdpi,xhdpi,xxhdpi....很多尺寸大小的png图片要求. 网上也有不少工具,今天我又发现一款在线转换大小的网站,用了一下,一个png 114X114 ...

  8. Atitit oodbms的查询,面向对象的sql查询jpa jpql hql

    Atitit oodbms的查询,面向对象的sql查询jpa jpql hql 1.1. 标准API历史1 1.2. JPA定义了独特的JPQL(Java Persistence Query Lang ...

  9. 使用swoole和websocket结合来制造弹幕

    在知乎上无意中看到了一篇有关这个的话题https://zhuanlan.zhihu.com/p/23992890,刚好没事也好久没弄swoole了就自己按照知乎上的那篇文站实操了一下 那个试验中有几个 ...

  10. java中IO流相关知识点

    (一) 下边使用outputStream字节输出流进行写操作 package zdbIO;import java.io.File;import java.io.FileNotFoundExceptio ...