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. 上学时的HTML+JS+CSS(小总结)

    html:超文本标记语言 基本标签: { 文本标签:<pre></pre>:原封不动的保留空白区域.      <br />:换行.      <hr wid ...

  2. TACACS.Net Group 配置

    Tacacs作为一个验证工具,其网站上资料较少,只有一些缺省配置,并且没有提到如果在应用中与其自带的Group功能做集成, 这里使用免费的windows 版的TACACS.net 作介绍http:// ...

  3. PMO到底什么样?(2)

    接上一篇,继续聊一聊PMO到底什么样. 交付功能,8大典型责任 1监控.评定和报告 项目办理单位从交付的视点必定要有监控评定.每个项目在要害的期间上它的进展是不是跟按期的相同:是不是有要害的专家在要害 ...

  4. Android开发学习之路-Android Design Support Library使用(CoordinatorLayout的使用)

    效果图: 上面的这个图有两个效果是,一个是顶部的图片,在上滑之后会隐藏起来并且显示出一个ToolBar(ToolBar类似于ActionBar,但是只有ToolBar是兼容Material Desig ...

  5. [Linux]Linux下redis的安装及配置.

    在上一篇[Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例. 我们已经将redis所需tar包拷贝到了linux下的root 根目录下, ...

  6. MongoDB修改器总结

    1"$set":用来制定一个字段值,若不存在,则创建:    一般用于点加一个字段   db.users.update({name:"joe"},{" ...

  7. TSQL HASHBYTES 用法

    HashBytes 使用Hash 算法,能够产生高质量的Hash值,大幅度提高识别数据相异的准确性,但是HashBytes函数无法提供100%的准确度,如果业务逻辑要求不允许有误差,那么不要使用任何H ...

  8. C#多线程之旅(4)——APM初探

    源码地址:https://github.com/Jackson0714/Threads 原文地址:C#多线程之旅(4)——APM初探 C#多线程之旅目录: C#多线程之旅(1)——介绍和基本概念 C# ...

  9. CSS实现水平垂直同时居中的5种思路

    × 目录 [1]水平对齐+行高 [2]水平+垂直对齐 [3]margin+垂直对齐[4]absolute[5]flex 前面的话 水平居中和垂直居中已经单独介绍过,本文将介绍水平垂直同时居中的5种思路 ...

  10. codeforces Gargari and Bishops(很好的暴力)

    /* 题意:给你一个n*n的格子,每一个格子都有一个数值!将两只bishops放在某一个格子上, 每一个bishop可以攻击对角线上的格子(主对角线和者斜对角线),然后会获得格子上的 数值(只能获取一 ...