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. 为什么eclipse中启动tomcat后,浏览器中出现404?

    问题描述: tomcat压缩包加压后,启动lib文件夹下面的startup.bat,在浏览器中输入http://localhost:8080/后出现熟悉的界面. 但是在eclipse中,jsp可以正常 ...

  2. 《JAVA 从入门到精通》 - 正式走向JAVA项目开发的路

    以前很多时候会开玩笑,说什么,三天学会PHP,七天精通Nodejs,xx天学会xx ... 一般来说,这样子说的多半都带有一点讽刺的意味,我也基本上从不相信什么快速入门.我以前在学校的时候自觉过很多门 ...

  3. fir.im Weekly - Mobile developer 利器分享

    工欲善其事,必先利其器.本期 fir.im Weekly 推荐了很多优秀的 Github 项目.iOS/Android 开发工具利器,比如墨__守独立开发的macOS App -- Repo, 帮助 ...

  4. 简单使用AutoMapper实现DTO转换

    DTO(Data Transfer Object)数据传输对象,只是传输数据,完成与领域对象之间的转换,并不包含领域业务处理. 当领域模型设计人员只关注核心业务,满足于领域模型的精巧,而不关心具体实现 ...

  5. Android引导页设计

    大家在安装好一个应用后,第一次打开时往往会出现一个使用引导页,形式一般为三.四张图片,随着我们的滑动进行切换,在最后一页会有一个进入应用的按钮,我们通过点击这个按钮可以进入应用,其实这其中没有太多的复 ...

  6. 【5.1送礼】国内第一部Matlab和C#.Net混合编程视频教程【免费】

                  本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新    Matlab和C#混合编程文章目录 :[目录]Matlab和C#混合编程文章目录 上一次写博客很久了 ...

  7. Android Studio项目转Eclipse项目

    Android Studio项目的目录结构和Eclipse项目不同.如何转换? 以FloatingAction 项目为例:实现向上滑动隐藏悬浮按钮,向上滑动显示悬浮按钮. GitHub 地址:http ...

  8. 漫谈可视化Prefuse(五)---一款属于我自己的可视化工具

    伴随着前期的基础积累,翻过API,读过一些Demo,总觉得自己已经摸透了Prefuse,小打小闹似乎已经无法满足内心膨胀的自己.还记得儿时看的<武状元苏乞儿>中降龙十八掌最后一张居然是空白 ...

  9. 十款让 Web 前端开发人员更轻松的实用工具

    这篇文章介绍十款让 Web 前端开发人员生活更轻松的实用工具.每个 Web 开发人员都有自己的工具箱,这样工作中碰到的每个问题都有一个好的解决方案供选择. 对于每一项工作,开发人员需要特定的辅助工具, ...

  10. Azure ARM (8) ARM Template - VS Code

    <Windows Azure Platform 系列文章目录> 在上一节内容中,笔者介绍了如何使用Visual Studio来编辑ARM Template. 但是在某些时候,Visual ...