结构体

定义:
struct Student{ // 定义结构体Student, stu是创建的对象
        char a[17]; // 结构体里面可以有多种不同类型的变量
        int b;
        char c;
        double d;
}stu;
printf("%ld", sizeof(stu)); // 打印的是40

分析:



假设从地址0开始给结构体空间

分配char a[17];(17字节) -> 现在偏移量是17

接下来存int(4字节), 根据对齐方式, 当前偏移量必须是4的倍数

需要补全3个字节达到偏移量20 (这3个字节什么也不存)

分配int b; 偏移量24

分配char c;(1字节), 偏移量24是1的倍数, 所以继续分配, 偏移量25

分配double d;(8字节), 根据要求偏移量必须是8的倍数, 25需要补7

补全7个字节, 什么也不存, 然后加上这8字节共40个字节

预编译, 编译, 运行

  • #######define, #import, #include, #warning, #prama mark, #error, #if, #else, #endif 等等, 只要是用#开头的, 都是预编译, Xcode一直在进行预编译.
  • Command + B 编译, 是把OC代码转换成C代码等资源.
  • 运行, 就是程序在机器中, 跑起来
  • #######define N 3 (把项目中所有N换成3)

类别名

typedef int* apple1; // 给int *起个别的名字叫 apple1

apple1 p = NULL, q = NULL; (apple1 还是int *)

static

static int a = 10; // 在编译时已经执行完了, 运行的时候不再执行, 确保a在每次运行的过程当中只初始化一次

(可以设置断点, 运行时候不会停在它身上-> 代表运行时不执行这行代码)

使用:
void fun() {
static int a = 0;  // 下次走的时候,不想让a释放
a++;
}

const

const 声明的东西是 readonly(只读) 存放在常量区 (节省栈内存)
  • const int *a *a = 5 内容不能变 指针a可以指向别的
  • int * const a 指针不可变, 内容可以变
  • int const * const a 都不可以变 (const和int可以换位置)

[C]语法, 知识点总结(二. 结构体, 类别名, static, const)的更多相关文章

  1. 枚举类 enum,结构体类 struct

    1.枚举类型的值,直观易于理解,见词知意. 格式: enum 枚举类名:值类型 { 值1, 值2, 值n } 每个值默认(省略“:值类型”)以int型数据存储,从0开始. 使用格式:枚举类名 变量=枚 ...

  2. 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承

    1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum  Celebrity{  case DongXie,XiDu,Nandi,BeiGai }  // 从左 ...

  3. Swift枚举|结构体|类|属性|方法|下标脚本|继承

    1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum  Celebrity{  case DongXie,XiDu,Nandi,BeiGai }  // 从左 ...

  4. [转]C++结构体|类 内存对齐详解

    内存地址对齐,是一种在计算机内存中排列数据(表现为变量的地址).访问数据(表现为CPU读取数据)的一种方式,包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐 . 为什么需要内存对齐?对 ...

  5. 【C++】结构体/结构体数组/结构体指针/结构体嵌套/函数参数/const

    一.结构体声明 struct Student { //成员列表 string name; int age; int score; }; //s3;定义时直接声明 int main() { struct ...

  6. C# 一些知识点总结(二)_路径类,编码类,文件类...

    Path 类:路径类path.GetFileName("文件路径")//获取完整文件名,包括文件名和文件拓展名Path.GetFileNameWithoutExtension(&q ...

  7. QMap的key也可以是一个结构体类吗?

    QMap<usbsnvidpid, QVector<QString>> USBVIDPIDTIME; USBVIDPIDTIME.insert(m_vidpidsn, time ...

  8. Swift超详细的基础语法-结构体,结构体构造器,定义成员方法, 值类型, 扩充函数

    知识点 基本概念 结构体的基本使用 结构体构造器(构造函数/构造方法) 结构体扩充函数(方法), 又称成员方法 结构体是值类型 1. 基本概念 1.1 概念介绍 结构体(struct)是由一系列具有相 ...

  9. oc语言学习之基础知识点介绍(二):类和对象的进一步介绍

    一.类.对象在内存中的存储 /* 内存分区: 栈:局部变量 堆:程序员自己写代码申请开辟的 程序员自己维护,编译器现在帮我们自动优化了,它在合适的给我们加上了释放空间的语句,所以我们现在写的对象不会造 ...

随机推荐

  1. unity过场动画组件Timeline

    Timeline是Unity2017版本中新加入的功能,可以非常方便的进行场景动画的创建和修改,包括物体.声音.粒子.动画.特效.自定义Playable以及子Timeline等多种资源进行整合,从而能 ...

  2. Laya鼠标事件阅读

    点击事件核心类:MouseManager和TouchManager. MouseManager负责收集相关事件,进行捕获阶段和目标阶段. TouchManger负责处理和分发事件,进行冒泡阶段. 捕获 ...

  3. mark一下岗位

    一.中国移动杭州研发中心——测试开发工程师 https://campusresume.zhaopin.com/resume/14375/1   等内推信息 岗位描述:作为产品的质量守护者,在全面理解被 ...

  4. python爬虫-使用cookie登录

    前言: 什么是cookie? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想 ...

  5. Notes of Daily Scrum Meeting(12.18)

    前期落下的进度我们会在周六周日赶一下,在编译课程设计中期测试之后集中处理项目中的问题. 今天的任务总结如下: 团队成员 今日团队工作 陈少杰 调试后端连接的部分,寻找bug 王迪 测试搜索功能,修改b ...

  6. 20135220谈愈敏Linux Book_1&2

    第一章 Linux内核简介 从unix的历史视角来认识Linux内核与Linux操作系统的前世今生. Unix历史 贝尔实验室设计的一个文件系统原型逐渐演化而成Unix,而后Unix操作系统用C语言重 ...

  7. 读书笔记(chapter1-2)

    一.linux内核简介 1.1unix的历史 1.unix强大的根本原因:1.unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目的:2.在unix中,所有的东西都被当作文件对待:3.un ...

  8. 第二个Sprint冲刺第 七天(燃尽图)

  9. tp5+layui 实现上传大文件

    前言: 之前所写的文件上传类通常进行考虑的是文件的类型.大小是否符合要求条件.当上传大文件时就要考虑到php的配置和服务器的配置问题.之前简单的觉得只要将php.ini中的表单上传的 大小,单脚本执行 ...

  10. Alpha发布评价

    1.奋斗吧兄弟组 食物链系统 是一个比较成熟的工具,可以应用于生物课程的辅助讲解,具有很强的软件目的性和实用性. 2.Newbee 俄罗斯方块 因为选了很经典的游戏,所以在创新上下了一定功夫,可是没有 ...