摘要:
1.Android源码中的产品线解析 通常产品厂商在拿到Android源码后会在Android源码基础上进行定制修改,以匹配适应自己的产品。这就引入了产品线的概念。Android系统源码中,产品相关的文件通常保存在 device/company/product目录下其目录的组织结构为 在tiny44 阅读全文
摘要:
Android.mk文件用来向编译系统描述如何编译你的源代码。在编译整个工程的情况下,系统所找到的所有的Android.mk将会先存入subdir_makefiles变量中,随后一次性一次性include进整个编译文件中。 (1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找 阅读全文
摘要:
1.Android 编译系统概述 Build 系统中最主要的处理逻辑都在 Make 文件中,而其他的脚本文件只是起到一些辅助作用。 整个 Build 系统中的 Make 文件可以分为三类: ① Build 系统核心文件,此类文件定义了整个 Build 系统的框架,而其他所有 Make 文件都是在这个 阅读全文
摘要:
1. 递归函数的思想 (1)递归是一种数学上分而自治的思想,是将大型复杂问题转化为与原问题相同但规模较小的问题进行处理的一种方法 (2)递归需要有边界条件 ①当边界条件不满足时,递归继续进行 ②当边界条件满足时,递归停止 2. 递归函数 (1)递归函数的函数体内部存在自我调用 (3)递归函数是递归的 阅读全文
摘要:
1. C 语言中的函数 (1)函数的由来: 程序 = 数据 + 算法→C 程序 = 数据 + 函数 (2)模块化程序设计 (3)C 语言中的模块 2. 面向过程的程序设计 (1)面向过程是一种以过程为中心的编程思想 (2)首先将复杂的问题分解为一个个容易解决的问题 (3)分解过后的问题可以按照步骤一 阅读全文
摘要:
1. 野指针 (1)指针变量中的值是非法的内存地址,进而形成野指针 (2)野指针不是 NULL 指针,是指向不可用内存地址的指针 (3)NULL 指针并无危害,很好判断,也很好调试 (4)C 语言中无法判断一个指针所保存的地址是否合法 2. 野指针的由来 (1)局部指针变量没有被初始化 (2)指针所 阅读全文
摘要:
1. 程序中的栈 1.1 栈的简介 (1)栈中现代计算机程序里最为重要的概念之一 (2)栈在程序中用于维护函数调用上下文 (3)函数中的参数和局部变量存储在栈上 (4)栈保存了一个函数调用所需的维护信息 1.2 函数调用过程 (1)每次函数调用都对应着一个栈上的活动记录,调用函数的活动记录位于栈的中 阅读全文
摘要:
1. 动态内存分配的意义 (1)C 语言中的一切操作都是基于内存的。 (2)变量和数组都是内存的别名。 ①内存分配由编译器在编译期间决定 ②定义数组的时候必须指定数组长度 ③数组长度是在编译期就必须确定的 (3)但是程序运行的过程中,可能需要使用一些额外的内存空间 2. malloc 和 free 阅读全文
摘要:
1. 指针阅读技巧:右左法则 (1)从最里层的圆括号中未定义的标示符看起 (2)首先往右看,再往左看 (3)遇到圆括号或方括号时可以确定部分类型,并调转方向 (4)重复 2、3 步骤,直到阅读结束 注意: 当读出是数组时,须读出元素个数、元素类型 当读出是函数是,须读出参数及类型,返回值类型 当读出 阅读全文
摘要:
1. 函数类型 (1)C 语言中的函数有自己特定的类型,这个类型由返回值、参数类型和参数个数共同决定。如 int add(int i,int j)的类型为 int(int,int)。 (2)C 语言中通过 typedef 为函数类型重命名 typedef type name(parameter li 阅读全文