iOS学习06C语言结构体
1、结构体的概述
在C语言中,结构体(struct)指的是一种数据结构,是C语言中构造类型的其中之一。
2、结构体的定义
struct 结构体名 {
成员变量1;
成员变量2;
...
};
struct student {
// 结构体的成员变量
char name[]; // 姓名
char gender; // 性别
int age; // 年龄
double score; // 成绩
};// 分号不能省略
3、结构体变量的定义
struct teacher {
char name[];
int age;
float height;
}; // 分号不能省略
struct teacher englishTeacher;
struct teacher {
char name[];
int age;
float height;
} mathTeacher;
其中mathTeacher为变量名。
struct {
char name[];
int age;
float height;
} chineseTeacher;
其中chineseTeacher为变量名, 此结构体我们称为匿名结构体。
4、结构体的重定义
2) 在创建结构体时, 进行重定义:
typedef struct teacher {
char name[];
int age;
float height;
} Teacher;
5、结构体变量的成员
1) 结构体变量成员的初始化:使用{...}给构造类型赋初始值
Teacher englishTeacher = {“zf”, , 1.70f};
注意:赋值的数值类型和成员变量的类型一一对应
englishTeacher.name = tt
englishTeacher.age =
englishTeacher.height = 1.77f
2> 结构体与结构体可以直接赋值
注意:数组是不可以直接赋值的
6、结构体所占内存的计算
1) 最大分配(长度最大的进行分配内存)
2) 内存对齐(对应类型所占字节的倍数进行存放)
struct student {
char name[]; //内存0-20
char gender; //内存21
int age; //内存24-27
double score; //内存32-39
};
图解:

7、结构体嵌套
struct birthday {
int year;
int month;
int day;
};
typedef struct birthday Birthday;
struct person {
char name[];
char gender;
Birthday bir;
};
typedef struct person Person;
struct person {
char name[];
struct person per;
};
8、结构体数组
数组的类型是结构体类型,与其他数据类型的数组是一样的,可以参考iOSDay04C语言数组
iOS学习06C语言结构体的更多相关文章
- Linux C语言结构体-学习笔记
Linux C语言结构体简介 前面学习了c语言的基本语法特性,本节进行更深入的学习. 预处理程序. 编译指令: 预处理, 宏定义, 建立自己的数据类型:结构体,联合体,动态数据结构 c语言表达式工具 ...
- GO语言学习(十六)Go 语言结构体
Go 语言结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型. 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 结构体表示一项记录,比如保存图 ...
- c语言结构体
[C语言]21-结构体 本文目录 一.什么是结构体 二.结构体的定义 三.结构体变量的定义 四.结构体的注意点 五.结构体的初始化 六.结构体的使用 七.结构体数组 八.结构体作为函数参数 九.指向结 ...
- 对嵌入式开发C语言结构体的一点总结
今天冬至居然不上班,公司的良心啊!这回有心情写博客和日志了,好了,废话不多说.直接看下文: 鉴于嵌入式开发过程中,C语言结构体的使用当然是必不可少.话说,基础什么的比你会更牛逼的算法更重要,基础不牢, ...
- 漫谈C语言结构体
相信大家对于结构体都不陌生.在此,分享出本人对C语言结构体的学习心得.如果你发现这个总结中有你以前所未掌握的,那本文也算是有点价值了.当然,水平有限,若发现不足之处恳请指出.代码文件test.c我放在 ...
- 漫谈C语言结构体【转】
相信大家对于结构体都不陌生.在此,分享出本人对C语言结构体的学习心得.如果你发现这个总结中有你以前所未掌握的,那本文也算是有点价值了.当然,水平有限,若发现不足之处恳请指出.代码文件test.c我放在 ...
- 漫谈C语言结构体struct、公用体union空间占用
先用代码说话: #include<stdio.h> union union_data0{ int a ;//本身占用4个字节 char b ;//本身占用1个字节 int c ; }; u ...
- 解析C语言结构体对齐(内存对齐问题)
C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的 ...
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
随机推荐
- Linux Shell常用快捷键
ctrl+a[A]:将光标移到命令行开头 ctrl+e[E]:将光标移到命令行结尾 ctrl+c[C]:强制终止命令执行 ctrl+u[U]:删除/剪切光标之前的所有字符 ctrl+y[Y]:粘贴ct ...
- INNODB
INNODB,是Mysql5.7的默认存储引擎,是事务安全的,支持ACID,具有提交,回滚和crash-recovery[灾备]能力,以保护用户数据. 优势:一旦Server崩溃,Innodb会自动保 ...
- LNMP平台搭建---Linux系统安装篇
在互联网网站开发领域,有一个名词,大家一定不陌生,那就是LAMP,经典的Web服务器环境,由Linux+Apache+MySQL+PHP组成,,后来,一个名叫Nginx的Web服务器开源出来了,因其更 ...
- 用java来删除数组中指定的元素
public static void main(String[] args){ String[] a = new String[]{"1","5" ...
- 《CLR via C#》读书笔记(5)基元类型、引用类型和值类型
5.1 基元类型 编译器直接支持的数据类型称为基元类型(primitive type). 以下4行到吗生成完全相同的IL int a = 0; //最方便的语法 System.Int32 b = 0; ...
- 怎么把MVC的Controller拆分写到别的类库
以为很难…… 其实直接继承Controller 并且按MVC_Controllser规则命名. 然后网站项目引用该项目即可.
- windows 10 上office2016 word崩溃的解决方案
方案1:--个人试验可行,把如下路径改成自己系统路径 C:Documents and Settings/Administrator/application/data/microsoft/templat ...
- Java程序员要求具备的10项技能
1.语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:a ...
- oracle 10g\11g用imp导入数据的时候报错:ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区 错误解决
备份文件是从11g中通过exp命令导出的,在10g下使用imp导入出现了上述错误,以为是低版本的不支持高版本的备份,于是使用11g测试,还是上面的问题. 其实是表空间大小不够的问题,下面是网上的解答: ...
- 在Salesforce中添加Workflow Rule
在Salesforce中可以添加Workflow Rule来执行特定的动作,比如说:当Object的某个字段发生变化时,根据变化的值去修改其他field,和Trigger的功能很类似,不过Trigge ...