导入 关于C语言的底层逻辑剖析,此系列我们就要正式进入C语言的深入学习,关于学编程这件事呢,其实还是那句话,学习编程这件事是极其枯燥也是非常困难的,但是要相信坚持一定会有收获,共勉。 语句 什么是语句? 在C语言中大致有以下几种语句 1.表达式语句; 2.函数调用语句; 3.控制语句; 4.复合语句; 5.空语句; 1...
置位1的作用主要是为了标记obj被weak引用了,当dealloc时,runtime会根据weakly_referenced标志位来判断是否需要查找obj对应的weak_entry_t,并将引用置为nil。 // Template parameters.enumHaveOld{DontHaveOld=false,DoHaveOld=true};enumHaveNew{DontHaveNew=false,DoHaveNew=true};enumCrashIfDeallocating{DontCrashIf...
引用数组 int arr[5] = {1,2,3,4,5};int(&p)[5] = arr; //int(*p)[5] = &arr; 1. 2. 应用的底层使用的是 指针,编译时期 在引用被使用的地方,直接替换成指针的解引用。 对于引用而言,必须初始化。在编译过后只有在初始化的地方才能看见引用名,其他地方全是以指针解引用的形式出现。如果不初始...
全局变量,不管 是 否被初始化,其生命周期都是整个程序运行过程中,为了节省内存空间,在当前文件中 使用extern来声明其它文件中定义的全局变量时,就不会再为其分配内存空间。 3.register的变量在由内存调入到CPU寄存器后,则常驻在CPU的寄存器中,因此register将 在很大程度上提高效率,因为省去了变量由内存调入到寄存器过...
CPU执行一条特定指令的详细过程是取指、译码、执行、访存、回写,这是一个非常详细的硬件底层细节,本节将从软件逻辑的角度看CPU执行多条指令的过程。 这个过程描述起来很简单,就是一个循环: 1.以PC寄存器中值为内存地址A,读取内存地址A中的数据 2.CPU把内存地址A中的数据作为指令执行,具体执行过程:取指、译码、...
1.ObjC类与方法的底层实现逻辑 (1)基本概念 根类:在OC中几乎所有类都继承自NSObject,NSObject类就是根类,根类的父类为nil 元类:在我们平时开发中会用到类方法和实例方法,但是在底层的实现中并没有这种区分,实际上都是通过实例方法去查找的,底层为了区分这两种方法,引入元类的概念,然后将实例方法存储在类中...
1.2 基本操作实现的底层逻辑 为了更好的介绍这些基本操作,我们还是以创建、销毁、增删改查的顺序来进行介绍; 1.2.1 队列的创建与销毁 队列的创建 对于队列的创建实际上就是定义数据类型、定义队列变量以及初始化一个队列。那如果要定义一个数据类型,按照前面的介绍,队列的数据类型中至少有三个内容: ...
C语言的按位运算符已经非常接近底层操作了,包含六个基本运算符号: & 按位与 | 按位或 ~ 按位取反 ^ 按位异或 << 左移 >> 右移 在前三个里面呢,按位与,按位或,按位取反与本文开头的逻辑运算符相类似,只不过按位运算符是将一个数变为二进制之后对每一位进行计算。在STM32单片机开发中,我们最常用到...
在send_msg函数中,我们传入msg_handler接口结构体作为参数,并通过调用函数指针来实现不同的处理方式。这样,即使需要新增处理方式,我们也只需要定义新的实现结构体并通过接口结构体传入即可,避免了对主逻辑代码的修改。 3.3 开闭原则的优缺点 3.3.1 适当使用开闭原则的优点 可扩展性:遵循开闭原则,软件系统可以更容易...
C/S系统快速开发平台采用三层逻辑架构(3-Tier Architecture),由界面层(UI-User Interface Layer)、业务逻辑层(BLL-Business Logic Layer),数据访问层(DAL-Data Access Layer)三层组成。在软件体系架构设计中,分层次是最常见也是最重要的一种设计思路,目的是实现“高内聚,低耦合”设计思想。