0%

基本信息

名称: 你必须知道的495个C语言问题
作者信息: 作者: 朱群英 [ 中文 pdf ]

简单介绍

《你必须知道的495个C语言问题》结构清晰,讲解透彻,是各高校相关专业C语言课程很好的教学参考书,也是各层次C程序员的优秀实践指南。全球C语言程序员集体智慧的结晶;Amazon全五星图书;权威解答495个最常遇到的C语言问题。C是一门简洁精妙的语言,掌握基本语法容易,真正能够自如运用,就不那么简单了。你难免会遇到各种各样的问题,有些可能让你百思不得其解,甚至翻遍图书馆,也找不到问题的答案。《你必须知道的495个C语言问题》的出版填补了这一空白。许多知识点的阐述都是其他资料中所没有的,弥足珍贵。涵盖C99标准。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
第1章 声明和初始化
基本类型
1.1 我该如何决定使用哪种整数类型?
1.2 为什么不精确定义标准类型的大小?
1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后根据实际的机器环境把它们定义为int、short、long等类型。这样看来,所有的问题都解决了,是吗?
1.4 新的64位机上的64位类型是什么样的?
指针声明
1.5 这样的声明有什么问题?char p1, p2; 我在使用p2的时候报错了。 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?char p; p=malloc(10); 声明风格 1.7 怎样声明和定义全局变量和函数最好? 1.8 如何在C中实现不透明(抽象)数据类型? 1.9 如何生成“半全局变量”,就是那种只能被部分源文件中的部分函数访问的变量? 存储类型 1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 1.11 extern在函数声明中是什么意思? 1.12 关键字auto到底有什么用途? 类型定义(typedef) 1.13 对于用户定义类型,typedef 和#define有什么区别? 1.14 我似乎不能成功定义一个链表。我试过typedef struct{char item; NODEPTR next;} NODEPTR; 但是编译器报了错误信息。难道在C语言中结构不能包含指向自己的指针吗? 1.15 如何定义一对相互引用的结构? 1.16 Struct{ } x1;和typedef struct{ } x2; 这两个声明有什么区别? 1.17 “typedef int(funcptr)();”是什么意思?
const 限定词
1.18 我有这样一组声明:typedef char charp; const charp p; 为什么是p而不是它指向的字符为const? 1.19 为什么不能像下面这样在初始式和数组维度值中使用const值?const int n=5; int a[n]; 1.20 const char p、char const p和char const p有什么区别?
复杂的声明
1.21 怎样建立和理解非常复杂的声明?例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组?
1.22 如何声明返回指向同类型函数的指针的函数?我在设计一个状态机,用函数表示每种状态,每个函数都会返回一个指向下一个状态的函数的指针。可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数,如此往复,以至无穷。
数组大小
1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小的参数数组?
1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小?
声明问题
1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。
1.26 main的正确定义是什么?void main正确吗?
1.27 我的编译器总在报函数原型不匹配的错误,可我觉得没什么问题。这是为什么?
1.28 文件中的第一个声明就报出奇怪的语法错误,可我看没什么问题。这是为什么?
1.29 为什么我的编译器不允许我定义大数组,如double array[256][256]?
命名空间
1.30 如何判断哪些标识符可以使用,哪些被保留了?
初始化
1.31 对于没有显式初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零?
1.32 下面的代码为什么不能编译? intf(){char a[]=“Hello, world!”;}
1.33 下面的初始化有什么问题?编译器提示“invalid initializers ”或其他信息。char p=malloc(10); 1.34 char a[]= “string literal”;和char p=“string literal”; 初始化有什么区别?当我向p[i] 赋值的时候,我的程序崩溃了。
1.35 char a{[3]}= “abc”; 是否合法?
1.36 我总算弄清楚函数指针的声明方法了,但怎样才能初始化呢?
1.37 能够初始化联合吗?

第2章 结构、联合和枚举 结构声明 2.1 struct x1{ };和typedef struct{ }x2; 有什么不同? 2.2 这样的代码为什么不对?struct x{ }; x thestruct; 2.3 结构可以包含指向自己的指针吗? 2.4 在C语言中用什么方法实现抽象数据类型最好? 2.5 在C语言中是否有模拟继承等面向对象程序设计特性的好方法? 2.6 为什么声明extern f(struct x *p); 给我报了一个晦涩难懂的警告信息? 2.7 我遇到这样声明结构的代码:struct name {int namelen; char namestr[1];};然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素,namelen记录了元素个数。它是怎样工作的?这样是合法的和可移植的吗? 2.8 我听说结构可以赋给变量也可以对函数传入和传出。为什么K&R1却明确说明不能这样做? 2.9 为什么不能用内建的==和!=操作符比较结构? 2.10 结构传递和返回是如何实现的? 2.11 如何向接受结构参数的函数传入常量值?怎样创建无名的中间的常量结构值? 2.12 怎样从/向数据文件读/写结构? 结构填充 2.13 为什么我的编译器在结构中留下了空洞?这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充,或者控制结构域的对齐方式? 2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 2.15 如何确定域在结构中的字节偏移量? 2.16 怎样在运行时用名字访问结构中的域? 2.17 C语言中有和Pascal的with等价的语句吗? 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样? 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了,怎么回事? 联合 2.20 结构和联合有什么区别? 2.21 有办法初始化联合吗? 2.22 有没有一种自动方法来跟踪联合的哪个域在使用? 枚举 2.23 枚举和一组预处理的#define有什么不同? 2.24 枚举可移植吗? 2.25 有什么显示枚举值符号的容易方法吗? 位域 2.26 一些结构声明中的这些冒号和数字是什么意思? 2.27 为什么人们那么喜欢用显式的掩码和位操作而不直接声明位域?

第3章 表达式 求值顺序 3.1 为什么这样的代码不行?a[i]= i++; 3.2 使用我的编译器,下面的代码int i= 7; printf("%d\n", i++ * i++); 打印出49。不管按什么顺序计算,难道不该是56吗? 3.3 对于代码int i=3; i=i++; 不同编译器给出不同的i值,有的为3,有的为4,哪个是正确的? 3.4 有这样一个巧妙的表达式:a^= b^= a^= b; 它不需要临时变量就可以交换a和b的值。 3.5 可否用显式括号来强制执行我所需要的计算顺序并控制相关的副作用?就算括号不行,操作符优先级是否能够控制计算顺序呢? 3.6 可是&&和||操作符呢?我看到过类似while((c = getchar()) != EOF && c != ‘\n')的代码 3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 3.8 为什么表达式printf("%d %d", f1(), f2()); 先调用了f2?我觉得逗号表达式应该确保从左到右的求值顺序。 3.9 怎样才能理解复杂表达式并避免写出未定义的表达式?“序列点”是什么? 3.10 在a[i] = i++;中,如果不关心a[]的哪一个分量会被写入,这段代码就没有问题,i也的确会增加1,对吗? 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过,其结果正如我所期望的。 3.12 我不想学习那些复杂的规则,怎样才能避免这些未定义的求值顺序问题呢? 其他的表达式问题 3.13 ++i和i++有什么区别? 3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 3.17 为什么下面的代码总是给出0?double degC, degF; degC= 5.0 / 9 * (degF - 32); 3.18 需要根据条件把一个复杂的表达式赋给两个变量中的一个。可以用下面这样的代码吗?((condition) ? a : b)= complicated_expression; 3.19 我有些代码包含这样的表达式。a ? b=c : d 有些编译器可以接受,有些却不能。为什么? 保护规则 3.20 “semantics of‘’change in ANSI C”的警告是什么意思? 3.21 “无符号保护”和“值保护”规则的区别在哪里?

第4章 指针 基本的指针应用 4.1 指针到底有什么好处? 4.2 我想声明一个指针并为它分配一些空间,但却不行。这些代码有什么问题呢?char p; p =malloc(10); 4.3 p++自增p还是p所指向的变量? 指针操作 4.4 我用指针操作int数组的时候遇到了麻烦。 4.5 我有一个char 型指针碰巧指向一些int型变量,我想跳过它们。为什么((int )p)++; 这样的代码不行? 4.6 为什么不能对void 指针进行算术操作? 4.7 我有些解析外部结构的代码,但是它却崩溃了,显示出了“unaligned access”(未对齐的访问)的信息。这是什么意思? 作为函数参数的指针 4.8 我有个函数,它应该接受并初始化一个指针:void f(int ip){ static int dummy = 5; ip = &dummy;}但是当我如下调用时:int ip; f(ip); 调用者的指针没有任何变化。 4.9 能否用void 通用指针作为参数,使函数模拟按引用传递参数? 48 4.10 我有一个函数extern intf(int ); ,它接受指向int型的指针。我怎样用引用方式传入一个常数?调用f(&5);似乎不行。 4.11 C语言可以“按引用传参”吗? 其他指针问题 4.12 我看到了用指针调用函数的不同语法形式。到底怎么回事? 4.13 通用指针类型是什么?当我把函数指针赋向void 类型的时候,编译通不过。 4.14 怎样在整型和指针之间进行转换?能否暂时把整数放入指针变量中,或者相反? 4.15 我怎样把一个int变量转换为char *型?我试了类型转换,但是不行。

第5章 空指针 空指针和空指针常量 5.1 臭名昭著的空指针到底是什么? 5.2 怎样在程序里获得一个空指针? 5.3 用缩写的指针比较“if(p)”检查空指针是否有效?如果空指针的内部表达不是0会怎样? NULL 宏 5.4 NULL是什么,它是怎么定义的? 5.5 在使用非零位模式作为空指针的内部表示的机器上,NULL 是如何定义的? 5.6 如果NULL定义成#define NULL((char )0) ,不就可以向函数传入不加转换的NULL 了吗? 5.7 我的编译器提供的头文件中定义的NULL为0L。为什么? 5.8 NULL可以合法地用作函数指针吗? 5.9 如果NULL和0作为空指针常量是等价的,那我到底该用哪一个呢? 5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0) 不是更好吗? 5.11 我曾经使用过一个编译器,不使用NULL就不能编译。 5.12 我用预处理宏#define Nullptr(type)(type )0帮助创建正确类型的空指针。 回顾 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定? 5.14 为什么有那么多关于空指针的疑惑?为什么这些问题如此频繁地出现? 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 5.17 说真的,真有机器用非零空指针吗,或者不同类型用不同的表示? 地址0上到底有什么? 5.18 运行时的整数值0转换为指针以后一定是空指针吗? 5.19 如何访问位于机器地址0处的中断向量?如果我将指针值设为0,编译器可能会自动将它转换为非零的空指针内部表示。 5.20 运行时的“null pointer assignment”错误是什么意思?应该怎样捕捉它?

第6章 数组和指针 数组和指针的基本关系 6.1 我在一个源文件中定义了char a[6],在另一个源文件中声明了extern char a。为什么不行? 6.2 可是我听说char a[]和char a是等价的。是这样的吗? 6.3 那么,在C语言中“指针和数组等价”到底是什么意思? 6.4 既然它们这么不同,那为什么作为函数形参的数组和指针声明可以互换呢? 数组不能被赋值 6.5 为什么不能这样向数组赋值?extern char getpass(); char str[10]; str=getpass("Enter password:“); 6.6 既然不能向数组赋值,那这段代码为什么可以呢?int f(char str[]){ if(str[0] == ‘\0') str="none”;} 6.7 如果你不能给它赋值,那么数组如何能成为左值呢? 回顾 6.8 现实地讲,数组和指针的区别是什么? 6.9 有人跟我讲,数组不过是常指针。这样讲准确吗? 6.10 我还是很困惑。到底指针是一种数组,还是数组是一种指针? 6.11 我看到一些“搞笑”的代码,包含5[“abcdef”]这样的“表达式”。这为什么是合法的C语言表达式呢? 数组的指针 6.12 既然数组引用会退化为指针,如果array是数组,那么array和&array又有什么区别呢? 6.13 如何声明一个数组的指针? 动态数组分配 6.14 如何在运行时设定数组的大小?怎样才能避免固定大小的数组? 6.15 我如何声明大小和传入的数组一样的局部数组? 6.16 如何动态分配多维数组? 6.17 有个很好的窍门,如果我这样写:int realarray[10]; int array = &realarray[-1]; 我就可以把“array”当作下标从1 开始的数组。 函数和多维数组 6.18 当我向一个接受指针的指针的函数传入二维数组的时候,编译器报错了。 6.19 我怎样编写接受编译时宽度未知的二维数组的函数? 6.20 我怎样在函数参数传递时混用静态和动态多维数组? 数组的大小 6.21 当数组是函数的参数时,为什么sizeof不能正确报告数组的大小? 6.22 如何在一个文件中判断声明为extern的数组的大小(例如,数组定义和大小在另一个文件中)?sizeof操作符似乎不行。 6.23 sizeof返回的大小是以字节计算的,怎样才能判断数组中有多少个元素呢? 第7章 内存分配 第8章 字符和字符串 第9章 布尔表达式和变量 第10章 C预处理器 第11章 ANSI/ISO标准C 第12章 标准输入输出库 第13章 库函数 第14章 浮点运算 第15章 可变参数列表 第16 章 奇怪的问题 第17章 风格 第18章 工具和资源 第19章 系统依赖 第20章 杂项 术语表 参考文献

亚马逊链接

基本信息

名称: Android应用开发揭秘
作者信息: 作者: 杨丰盛 [ 中文 pdf ]

简单介绍

《Android应用开发揭秘》:Android应用开发揭秘Windows操作系统的诞生成就了微软的霸主地位,也造就了PC时代的繁荣。然而,以Android和iPhone手机为代表的智能移动设备的发明却敲响了PC时代的丧钟!移动互联网时代(3G时代)已经来临,谁会成为这些移动设备上的主宰?毫无疑问,它就是Android——PC时代的Windows!移动互联网还是一个新生的婴儿,各种移动设备上的操作系统群雄争霸!与Sym‘Dian、i P}lone OS、Wiridows Mobile相比,Androjd有着天生的优势一完全开放和免费,对广大开发者和手机厂商而言,这是何等的诱人!此外,在Google和以其为首的Android手机联盟的大力支持和推广下,Android不仅得到了全球开发者社区的关注,而且一大批世界一流的手机厂商都已经或准备采用Android。拥抱Android开发。拥抱移动开发的未来!如果你在思考下面这些问题,也许本书就是你想要的!Android开发与传统的J2ME开发有何相似与不同?如何通过Shared Preferences、Files、Network和SQLite等方式高效实现Android数据的存储?又如何通过Content Providers轻松地实现Androld数据的共享?如何使用Open Core、MediaPlayer、MediaRecorder方便快速地开发出包含音频和视频等流媒体的丰富多媒体应用?如何利用Android 2.0新增的蓝牙特性开发包含蓝牙功能的应用?又如何使用蓝牙APL来完善应用的网络功能?如何解决Android网络通信中的乱码问题?在Android中如何使用语音服务和Google Map Apl? Android如何访问摄象头、传感器等硬件的APl?如何时行Widget开发?如何用各种Android组件来打造漂亮的UI界面?Android如何解析XML数据?又如何提高解析速度和减少对内存、CPU资源的消耗?如何使用OpenGL ES在Android平台上开发出绚丽的3D应用?在Android平台上如何更好地设计和实现游戏引擎?如何对Android应用进行优化?如何进行程序性能测试?如何实现UI、zipalign和图片优化?如何通过NDK利用C、C++以及通过ASE利用Python等脚本语言Android开发应用?国内首本基于Android 2.0的经典著作,5大专业社区一致鼎力推荐!

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
前言
第一部分 准备篇
第1章 Android开发简介
1.1 Android基本概念
1.1.1 Android简介
1.1.2 Android的系统构架
1.1.3 Android应用程序框架
1.2 OMS介绍
1.2.1 OPhone介绍
1.2.2 Widget介绍
1.3 小结

第2章 Android开发环境搭建 2.1 Android开发准备工作 2.2 开发包及其工具的安装和 配置 2.2.1 安装JDK和配置Java开发 环境 2.2.2 Eclipse的安装与汉化 2.2.3 SDK和ADT的安装和 配置 2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇

第3章 Android程序设计基础 3.1 Android程序框架 3.1.1 Android项目目录结构 3.1.2 Android应用解析 3.2 Android的生命周期 3.3 Android程序U设计 3.4 小结

第4章 用户界面开发 4.1 用户界面开发详解 4.1.1 用户界面简介 4.1.2 事件处理 4.2 常用控件应用 4.2.1 文本框(Textiew) 4.2.2 列表(ListView) 4.2.3 提示(T0ast) 4.2.4 编辑框(EditText) 4.2.5 单项选择(RadioGroup、RadioButton 4.2.6 多项选择(CheckBox) 4.2.7 下拉列表(Spinner) 4.2.8 自动提示(AutoComplete.TextⅥew) 4.2.9 日期和时间(DatePicker、TimePicker) 4.2.10 按钮(Button) 4.2.1l 菜单(Menu) 4.2.12 对话框(Dialog) 4.2.13 图片视图(ImageView) 4.2.14 带图标的按钮(ImageButton) 4.2.15 拖动效果(Gallery) 4.2.16 切换图片(hmgeSwilcher) 4.2.17 网格视图(GridView) 4.2.18 卷轴视图(ScrollView) 4.2.19 进度条(ProgressBar) 4.2.20 拖动条(SeekBar) 4.2.21 状态栏提示(Notification、NotificationManager) 4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性布局 4.3.2 水平线性布局 4.3.3.相对布局(RelativeLayout) 4.3.4 表单布局(TableLayout) 4.3.5 切换卡(TabWidget) 4,4 小结

第5章 Android游戏开发 5.1 Android游戏开发框架 5.1.1 View类开发框架 5.1.2 SurfaceView类开发框架 5.2 Graphics类开发 5.5.1 Paint和Color类介绍 5.2.2 Canvas类介绍 5.2.3 几何图形绘制 5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像旋转 5.2.7 图像缩放 5.2.8 图像像素操作 5.2.9 Shader类介绍 5.2.10 双缓冲技术 5.2.11 全屏显示 5.2.12 获得屏幕属性 5.3 动画实现 5.3.1 Tween动画 5.3.2 Frame动画 5.3.3 GIF动画播放 5.4 小结

第6章 Android数据存储 6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享(ContentProviders) 6.7 小结

第7 章多媒体开发 7.1 多媒体开发详解 7.1.1 Open Core 7.1.2 MediaPlayer 7.1.3 MediaRecorder 7.2 播放音乐 7.3 播放视频 7.4 录制歌曲 7.5 相机设置 7.6 闹钟设置 7.7 铃声设置 7.8 小结

第8章 网络与通信 8.1 网络通信基础 8.1.1 无线网络技术 8.1.2 Android网络基础 8.2 HTTP通信 8.2.1 HttpURLConnection接口 8.2.2 HttpClient接口 8.2.3 实时更新 8.3 Socket通信 8.3.1 Socket基础 8.3.2 Socket应用(简易聊天室) 8.4 网络通信的中文乱码问题 8.5 WebKit应用 8.5.1 WebKjt概述 8.5.2 WebView浏览网页 8.5.3 WebView与Javascript 8.6 WtFi介绍 8.7 蓝牙 8.8 小结

第9章 Android特色开发 9.1 传感器 9.2 语音识别 9.3 GoogleMap 9.3.1 GoogleMap概述 9.3.2 准备工作 9.3.3 GoogleMapAPI的使用 9.3.4 定位系统 9.4 桌面组件 9.4.1 快捷方式 9.4.2 实时文件夹 9.4.3 Widget开发 9.5 账户管理 9.6 小结 第三部分 实例篇

第10章 Android应用开发 实例 10.1 情境模式 10.2 文件管理器 10.3 通讯录 10.4 音乐播放器 10.5 天气预报 10.6 个人地图 10.7 Widget日历 10.8 小结

第11 章Android游戏开发实例 11.1 手机游戏开发简介 11.2 游戏框架设计 11.3 地图设计 11.4 主角设计 11.5 图层管理器 11.6 游戏音效 11.7 游戏存档 11.8 小结 第四部分 高级篇

第12章 AndroidOpenGL开发 基础 12.1 OpenGL简介 12.2 多边形 12.3 颜色 12.4 旋转 12.5 3D 空间 12.6 纹理映射 12.7 光照和事件 12.8 混合 12.9 小结

第13章 AndroidOpenGL综合 应用 13.1 移动图像 13.2.3D 世界 13.3 飘动的旗帜 13.4 显示列表 13.5 雾 13.6 粒子系统 13.7 蒙版 13.8 变形 13.9 小结

第14章 游戏引擎实现 14.1 游戏引擎介绍 14.1.1 什么是引擎 14.1.2 引擎的进化 14.1.3 常见的游戏引擎 14.1.4 Android游戏引擎 14.2 游戏引擎结构 14.2.1 游戏引擎原理 14.2.2 游戏引擎定位 14.2.3 游戏引擎框架 14.3 游戏引擎设计 14.3.1 游戏引擎结构和功能 设计 14.3.2 游戏引擎设计注意事项 14.4 游戏引擎实现 14.4.1 Activity类实现 14.4.2 流程控制和线程 14.4.3 游戏对象与对象管理 14.4.4 图形引擎 14.4.5 物理引擎 14.4.6 事件模块 14.4.7 工具模块 14.4.8 脚本引擎、音效模块、网络 模块 14.5 小结

第15章 优化技术 15.1 优化的基本知识 15.1.1 如何书写出优秀代码 15.1.2 编程规范 15.2 程序性能测试 15.2.1 计算性能测试 15.2.2 内存消耗测试 15.3 初级优化 15.4 高级优化 15.5 Android高效开发 15.6 AndroidUI优化 15.7 其他优化 15.7.1 zipalign 15.7.2 图片优化 15.8 小结 第五部分 扩展篇

第16章 Android NDK开发 16.1 AndroidNDK简介 16.2 安装和配置NDK开发环境 16.2.1 系统和软件需求 16.2.2 NDK开发环境搭建 16.2.3 编译第一个NDK程序 16.3 AndroidNDK开发 16.3.1 JNI接口设计 16.3.2 使用C\C++实现本地 方法 16.3.3 Android.mk实现 16.3.4 Application.mk实现 16.3.5 编译C\C++代码 16.4 AndroidNDK中使用0penGL 16.5小结

第17章 Android脚本环境 17.1 Android脚本环境简介 17.2 Android脚本环境安装 17.3如何编写Android脚本程序 17.4小结

亚马逊链接

基本信息

名称: 数据结构与算法分析 C语言描述(原书第2版)
作者信息: 作者: 维斯 [ 中文 pdf ]

简单介绍

《数据结构与算法分析:C语言描述(原书第2版)》讨论数据结构和算法分析。数据结构主要研究组织大量数据的方法,而算法分析则是对算法运行时间的评估。随着计算机的速度越来越快,对于能够处理大量输入数据的程序的需求变得日益急切。可是,由于在输入量很大的时候,程序的低效率现象变得非常明显,因此这又要求对效率问题给予更仔细的关注。通过在实际编程之前对算法的分析,学生可以决定一个特定的解法是否可行。例如,学生在《数据结构与算法分析:C语言描述(原书第2版)》中将读到一些特定的问题并看到精心的实现方法是如何把对大量数据的时间限制从16年减至不到1秒的。因此,若无运行时间的阐释,就不会有算法和数据结构的提出。《数据结构与算法分析:C语言描述(原书第2版)》是国外数据结构与算法分析方在的标准教材,介绍了数据结构(大量数据的组织方法)以及算法分析(算法运行时间的估算)。《数据结构与算法分析:C语言描述(原书第2版)》的编写目标是同时廛授好的程序设计和算法分析技巧,使读者可以开发出具有最高效率的程序。《数据结构与算法分析:C语言描述(原书第2版)》可作为高级数据结构课程或研究生一年级算法分析课程的教材,使用《数据结构与算法分析:C语言描述(原书第2版)》需具有一些中级程序设计知识,还需要离散数学的一些背景知识。随着速度的不断提高和存储容量的持续增长,计算机的功能日益强大,从而处理数据和解决问题的规模和复杂程度与日俱增。这不仅带来了需要认真研究的新课题,而且突出了原有数据结构和算法效率低下的缺点。程序的效率问题不是由于计算机功能的强大而受到冷落,相反地,倒是被人们提到前所未有的重视程度,因为大型问题的解决所涉及到的大容量存储和高速度运算容不得我们对效率有丝毫的忽视。《数据结构与算法分析:C语言描述(原书第2版)》正是在阐述数据结构基本概念的同时深入地分析了算法的效率。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
出版者的话
专家指导委员会
译者序
前言
第1章 引论
第2章 算法分析
第3章 表、栈和队列
第4章 树
第5章 散列
第6章 优先队列(堆)
第7章 排序
第8章 不相交集AD
第9章 图论算法
第10章 算法设计技巧
第11章 摊还分析
第12章 高级数据结构及其实现
索引

亚马逊链接

基本信息

名称: C语言程序设计 现代方法(第2版)
作者信息: 作者: 金(K.N.King) [ 中文 pdf ]

简单介绍

《C语言程序设计:现代方法(第2版)》是C语言的经典之作,被誉为“近10年来最好的一部C语言著作”。书中讨论了标准C和C标准库的全部特性,包括信号、setjmp/longjmp和可变参数列表等其他书中很少涉及的内容。全书由易而难、循序渐进、螺旋式地讲述C语言,很好地处理了指针和位运算等难点。第2版覆盖了C99标准,并提供了对所有C99库函数的参考,还扩展了GCC的内容,增加了对抽象数据类型的讨论,并针对新CPU和操作系统做了更新。《C语言程序设计:现代方法(第2版)》尤为强调软件工程和现代编程理念,在知识的阐述中突出工业界的最佳实践、实际经验和编程风格,使读者能够合理运用所学,编写出可读性好、可靠性高和容易维护的代码。书中精心选择了近500道习题,贴近实战,与叙述文字相得益彰。目前《C语言程序设计:现代方法(第2版)》已被全球200多所学校采用为教材,包括哈佛大学、麻省理工学院、斯坦福大学、加州大学伯克利分校、耶鲁大学、加州理工学院等诸多名校。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
第1章 C语言概述1
1.1 C语言的历史1
1.1.1 起源1
1.1.2 标准化1
1.1.3 基于C的语言2
1.2 C语言的优缺点3
1.2.1 C语言的优点3
1.2.2 C语言的缺点3
1.2.3 高效地使用C语言4
问与答5

第2章 C语言基本概念7 2.1 编写一个简单的C程序7 程序显示双关语7 2.1.1 编译和链接8 2.1.2 集成开发环境8 2.2 简单程序的一般形式9 2.2.1 指令9 2.2.2 函数9 2.2.3 语句10 2.2.4 显示字符串10 2.3 注释11 2.4 变量和赋值12 2.4.1 类型12 2.4.2 声明13 2.4.3 赋值13 2.4.4 显示变量的值14 程序计算箱子的空间重量14 2.4.5 初始化15 2.4.6 显示表达式的值16 2.5 读入输入16 程序计算箱子的空间重量(改进版)16 2.6 定义常量的名字17 程序华氏温度转换为摄氏温度17 2.7 标识符18 2.8 C程序的书写规范19 问与答21 练习题23 编程题24

第3章 格式化输入/输出26 3.1 printf函数26 3.1.1 转换说明27 程序用printf函数格式化数28 3.1.2 转义序列28 3.2 scanf函数29 3.2.1 scanf函数的工作方法30 3.2.2 格式串中的普通字符31 3.2.3 易混淆的printf函数和scanf函数32 程序分数相加32 问与答33 练习题34 编程题35

第4章 表达式36 4.1 算术运算符36 程序计算通用产品代码的校验位38 4.2 赋值运算符39 4.2.1 简单赋值40 4.2.2 左值41 4.2.3 复合赋值41 4.3 自增运算符和自减运算符42 4.4 表达式求值43 4.5 表达式语句45 问与答45 练习题47 编程题49

第5章 选择语句50 5.1 逻辑表达式50 5.1.1 关系运算符50 5.1.2 判等运算符51 5.1.3 逻辑运算符51 5.2 if语句52 5.2.1 复合语句53 5.2.2 else子句53 5.2.3 级联式if语句54 程序计算股票经纪人的佣金55 5.2.4 “悬空else”的问题56 5.2.5 条件表达式57 5.2.6 C89中的布尔值58 5.2.7 C99中的布尔值58 5.3 switch语句59 程序显示法定格式的日期61 问与答62 练习题65 编程题67

第6章 循环69 6.1 while语句69 程序显示平方表71 程序数列求和71 6.2 do语句72 程序计算整数的位数73 6.3 for语句73 6.3.1 for语句的惯用法74 6.3.2 在for语句中省略表达式75 6.3.3 C99中的for语句75 6.3.4 逗号运算符76 程序显示平方表(改进版)77 6.4 退出循环78 6.4.1 break语句78 6.4.2 continue语句78 6.4.3 goto语句79 程序账簿结算80 6.5 空语句81 问与答83 练习题84 编程题85

第7章 基本类型88 7.1 整数类型88 7.1.1 C99中的整数类型90 7.1.2 整数常量90 7.1.3 C99中的整数常量91 7.1.4 整数溢出91 7.1.5 读/写整数91 程序数列求和(改进版)92 7.2 浮点类型93 7.2.1 浮点常量94 7.2.2 读/写浮点数94 7.3 字符类型94 7.3.1 字符操作95 7.3.2 有符号字符和无符号字符95 7.3.3 算术类型96 7.3.4 转义序列96 7.3.5 字符处理函数97 7.3.6 用scanf和printf读/写字符98 7.3.7 用getchar和putchar读/写字符98 程序确定消息的长度99 7.4 类型转换100 7.4.1 常用算术转换101 7.4.2 赋值过程中的转换102 7.4.3 C99中的隐式转换103 7.4.4 强制类型转换103 7.5 类型定义105 7.5.1 类型定义的优点105 7.5.2 类型定义和可移植性105 7.6 sizeof运算符106 问与答107 练习题109 编程题110

第8章 数组113 8.1 一维数组113 8.1.1 数组下标113 程序数列反向115 8.1.2 数组初始化115 8.1.3 指定初始化式116 程序检查数中重复出现的数字116 8.1.4 对数组使用sizeof运算符117 程序计算利息118 8.2 多维数组119 8.2.1 多维数组初始化120 8.2.2 常量数组121 程序发牌121 8.3 C99中的变长数组122 问与答123 练习题124 编程题125

第9章 函数129 9.1 函数的定义和调用129 程序计算平均值129 程序显示倒计数130 程序显示双关语(改进版)131 9.1.1 函数定义132 9.1.2 函数调用133 程序判定素数134 9.2 函数声明135 9.3 实际参数136 9.3.1 实际参数的转换137 9.3.2 数组型实际参数138 9.3.3 变长数组形式参数140 9.3.4 在数组参数声明中使用static141 9.3.5 复合字面量141 9.4 return语句142 9.5 程序终止143 9.6 递归144 程序快速排序146 问与答147 练习题150 编程题153

第10章 程序结构155 10.1 局部变量155 10.1.1 静态局部变量156 10.1.2 形式参数156 10.2 外部变量156 10.2.1 示例:用外部变量实现栈156 10.2.2 外部变量的利与弊157 程序猜数158 10.3 程序块161 10.4 作用域162 10.5 构建C程序163 程序给一手牌分类163 问与答169 练习题169 编程题170

第11章 指针172 11.1 指针变量172 11.2 取地址运算符和间接寻址运算符173 11.2.1 取地址运算符173 11.2.2 间接寻址运算符174 11.3 指针赋值174 11.4 指针作为参数176 程序找出数组中的最大元素和最小元素177 11.5 指针作为返回值179 问与答180 练习题181 编程题182

第12章 指针和数组184 12.1 指针的算术运算184 12.1.1 指针加上整数185 12.1.2 指针减去整数185 12.1.3 两个指针相减186 12.1.4 指针比较186 12.1.5 指向复合常量的指针186 12.2 指针用于数组处理186 12.3 用数组名作为指针188程序数列反向(改进版)189 12.3.1 数组型实际参数(改进版)189 12.3.2 用指针作为数组名191 12.4 指针和多维数组191 12.4.1 处理多维数组的元素191 12.4.2 处理多维数组的行192 12.4.3 处理多维数组的列192 12.4.4 用多维数组名作为指针192 12.5 C99中的指针和变长数组193 问与答194 练习题195 编程题197

第13章 字符串198 13.1 字符串字面量198 13.1.1 字符串字面量中的转义序列198 13.1.2 延续字符串字面量199 13.1.3 如何存储字符串字面量199 13.1.4 字符串字面量的操作200 13.1.5 字符串字面量与字符常量200 13.2 字符串变量200 13.2.1 初始化字符串变量201 13.2.2 字符数组与字符指针202 13.3 字符串的读和写203 13.3.1 用printf函数和puts函数写字符串203 13.3.2 用scanf函数和gets函数读字符串203 13.3.3 逐个字符读字符串204 13.4 访问字符串中的字符205 13.5 使用C语言的字符串库206 13.5.1 strcpy函数207 13.5.2 strlen函数208 13.5.3 strcat函数208 13.5.4 strcmp函数209程序显示一个月的提醒列表209 13.6 字符串惯用法211 13.6.1 搜索字符串的结尾211 13.6.2 复制字符串213 13.7 字符串数组214 程序核对行星的名字217 问与答218 练习题220 编程题222

第14章 预处理器225 14.1 预处理器的工作原理225 14.2 预处理指令227 14.3 宏定义227 14.3.1 简单的宏227 14.3.2 带参数的宏229 14.3.3 #运算符231 14.3.4 ##运算符231 14.3.5 宏的通用属性232 14.3.6 宏定义中的圆括号233 14.3.7 创建较长的宏233 14.3.8 预定义宏234 14.3.9 C99中新增的预定义宏235 14.3.10 空的宏参数236 14.3.11 参数个数可变的宏236 14.3.12 func标识符237 14.4 条件编译237 14.4.1 #if指令和#endif指令238 14.4.2 defined运算符238 14.4.3 #ifdef指令和#ifndef指令239 14.4.4 #elif指令和#else指令239 14.4.5 使用条件编译240 14.5 其他指令240 14.5.1 #error指令240 14.5.2 #line指令241 14.5.3 #pragma指令242 14.5.4 _Pragma运算符242 问与答243 练习题245

第15章 编写大型程序248 15.1 源文件248 15.2 头文件249 15.2.1 #include指令249 15.2.2 共享宏定义和类型定义250 15.2.3 共享函数原型251 15.2.4 共享变量声明252 15.2.5 嵌套包含253 15.2.6 保护头文件253 15.2.7 头文件中的#error指令254 15.3 把程序划分成多个文件254程序文本格式化255 15.4 构建多文件程序260 15.4.1 makefile260 15.4.2 链接期间的错误262 15.4.3 重新构建程序262 15.4.4 在程序外定义宏264 问与答264 练习题265 编程题266

第16章 结构、联合和枚举267 16.1 结构变量267 16.1.1 结构变量的声明267 16.1.2 结构变量的初始化269 16.1.3 指定初始化269 16.1.4 对结构的操作270 16.2 结构类型270 16.2.1 结构标记的声明271 16.2.2 结构类型的定义272 16.2.3 结构作为参数和返回值272 16.2.4 复合字面量273 16.3 嵌套的数组和结构274 16.3.1 嵌套的结构274 16.3.2 结构数组274 16.3.3 结构数组的初始化275程序维护零件数据库275 16.4 联合281 16.4.1 用联合来节省空间282 16.4.2 用联合来构造混合的数据结构284 16.4.3 为联合添加“标记字段”284 16.5 枚举285 16.5.1 枚举标记和类型名286 16.5.2 枚举作为整数286 16.5.3 用枚举声明“标记字段”286 问与答287 练习题289 编程题293

第17章 指针的高级应用294 17.1 动态存储分配294 17.1.1 内存分配函数294 17.1.2 空指针295 17.2 动态分配字符串296 …… 第18章 声明 327 第19章 程序设计 345 第20章 底层程序设计 363 第21章 标准库 377 第22章 输入/输出 384 第23章 库对数值和字符数据的支持 419 第24章 错误处理 446 第25章 国际化特性 456 第26章 其他库函数 482 第27章 C99对数学计算的新增支持 503 附录A C语言运算符 524 附录B C99与C89的比较 525 附录C C89与经典C的比较 529 附录D 标准库函数 532 附录E ASCII字符集 569 参考文献 570 索引 573

亚马逊链接

基本信息

名称: Android系统级深入开发 移植与调试
作者信息: 作者: 韩超 [ 中文 pdf ]

简单介绍

《Android系统级深入开发:移植与调试》:从Android开源工程到产品的开发宝典、全面介绍Android中与硬件相关的子系统、按照驱动程序和硬件抽象层两方面把握移植要点、高效粘合LinuX系统经验和移动设备应用场景、以三种硬件平台为参考,参考开发环境易于获得。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
第1章 Android系统移植开发概述 1
1.1 Android系统架构和生态系统 1
1.1.1 Android软件系统 1
1.1.2 Android的生态系统 3
1.2 Android移植的概念和方法 4
1.3 Android移植的主要工作 5

第2章 Android源代码和开发环境 8 2.1 开发环境和工具 8 2.2 Android的代码库 9 2.3 Android系统代码和编译 9 2.3.1 获取Android源代码 9 2.3.2 Android源代码结构 12 2.3.3 编译Android系统源代码 13 2.3.4 编译Android结果 13 2.4 Android Kernel代码和编译 14 2.4.1 Goldfish内核源代码 15 2.4.2 MSM内核源代码 15 2.4.3 Omap内核源代码 16 2.5 仿真器的运行环境 16 2.5.1 仿真器的运行 16 2.5.2 使用附加工具 18

第3章 Android系统移植的结构和方法 20 3.1 Android的Linux操作系统 20 3.1.1 标准的Linux操作系统 20 3.1.2 Android对Linux 内核的使用 22 3.1.3 Linux内核空间到用户空间的接口 24 3.1.4 平台数据和平台驱动 34 3.2 Android的硬件抽象层 35 3.2.1 硬件抽象层的地位和功能 35 3.2.2 硬件抽象层接口方式 36 3.3 Android中各个部件的移植方式 41 3.4 辅助性工作和基本调试方法 41 3.4.1 移植的辅助性工作 42 3.4.2 调试的方法 46

第4章 Android的GoldFish内核和驱动 56 4.1 GoldFish内核概述 56 4.2 GoldFish体系结构移植 58 4.3 GoldFish的Android专用驱动和组件 59 4.3.1 wakelock和earlysuspend 59 4.3.2 staging中的驱动程序 61 4.3.3 Ashmem驱动程序 66 4.3.4 Alarm驱动程序 67 4.3.5 pmem驱动程序 67 4.3.6 ADB Garget驱动程序 68 4.3.7 Android Paranoid网络 68 4.4 GoldFish的相关设备驱动 70 4.4.1 Framebuffer的驱动程序 70 4.4.2 键盘的驱动程序 70 4.4.3 实时时钟的驱动程序 71 4.4.4 TTY终端的驱动程序 71 4.4.5 NandFlash的驱动程序 72 4.4.6 MMC的驱动程序 72 4.4.7 电池的驱动程序 73 4.4.8 EAC音频的驱动程序 73

第5章 Android的MSM内核和驱动 74 5.1 MSM处理器概述 74 5.1.1 MSM概述 74 5.1.2 MSM适用于Android的Linux内核的结构 77 5.2 MSM体系结构的移植 79 5.3 MSM的Android专用驱动和组件 80 5.4 MSM的mahimahip平台的主要设备驱动 81 5.4.1 显示的驱动程序 81 5.4.2 触摸屏的驱动程序 82 5.4.3 按键和轨迹球的驱动程序 82 5.4.4 实时时钟的驱动程序 83 5.4.5 摄像头的驱动程序 83 5.4.6 无线局域网的驱动程序 83 5.4.7 蓝牙的驱动程序 84 5.4.8 DSP相关的驱动程序 84 5.4.9 高通特有的组件相关内容 85

第6章 Android的OMAP内核和驱动 87 6.1 OMAP内核概述 87 6.1.1 OMAP概述 87 6.1.2 OMAP适用于Android的Linux内核的结构 91 6.2 OMAP体系结构的移植 92 6.2.1 OMAP平台部分的移植 92 6.2.2 OMAP处理器部分的移植 94 6.3 OMAP的Android专用驱动和组件 96 6.4 OMAP的主要设备驱动 97 6.4.1 显示的驱动程序 97 6.4.2 摄像头和视频输出的驱动程序 98 6.4.3 i2c总线驱动程序 98 6.4.4 键盘的驱动程序 99 6.4.5 触摸屏的驱动程序 99 6.4.6 实时时钟的驱动程序 99 6.4.7 音频的驱动程序 99 6.4.8 蓝牙的驱动程序 100 6.4.9 以太网的驱动程序 100 6.4.10 DSP的驱动程序 100

第7章 显示系统 101 7.1 显示系统结构和移植内容 101 7.1.1 Donut及其之前显示系统的结构 102 7.1.2 Eclair及其之后显示系统的结构 102 7.1.3 移植的内容 103 7.2 移植和调试的要点 104 7.2.1 Framebuffer驱动程序 104 7.2.2 Donut及其之前的硬件抽象层 106 7.2.3 Eclair及其之后的硬件抽象层 107 7.3 显示部分模拟器的实现方式 112 7.3.1 Goldfish的framebuffer驱动程序 112 7.3.2 默认的Gralloc模块的实现 113 7.4 MSM中的实现 119 7.4.1 MSM的framebuffer驱动程序 119 7.4.2 MSM的Gralloc模块的实现 120 7.5 OMAP中的实现 126 7.5.1 OMAP的framebuffer驱动程序 126 7.5.2 OMAP的用户空间的实现 128

第8章 用户输入系统 129 8.1 用户输入系统结构和移植内容 129 8.1.1 用户输入系统的结构 129 8.1.2 移植的内容 131 8.2 移植的要点 131 8.2.1 input驱动程序 131 8.2.2 用户空间的处理 134 8.2.3 移植需要注意的情况 139 8.3 模拟器中的实现 141 8.3.1 驱动程序 141 8.3.2 用户空间的配置文件 141 8.4 MSM中的实现 142 8.4.1 触摸屏,轨迹球和按键驱动程序 142 8.4.2 用户空间的配置文件 144 8.5 OMAP中的实现 144 8.5.1 触摸屏和键盘的驱动程序 144 8.5.2 用户空间的配置文件 146 8.6 虚拟按键的实现 146

第9章 传感器系统 148 9.1 传感器系统结构和移植内容 148 9.1.1 传感器系统的结构 148 9.1.2 移植的内容 150 9.2 移植和调试的要点 150 9.2.1 驱动程序 150 9.2.2 硬件抽象层的内容 151 9.2.3 上层的情况和注意事项 153 9.3 模拟器中的实现 157

第10章 音频系统 162 10.1 音频系统结构和移植内容 162 10.1.1 音频系统的结构 162 10.1.2 移植的内容 164 10.2 移植和调试的要点 164 10.2.1 Audio驱动程序 164 10.2.2 硬件抽象层的内容 164 10.2.3 Audio策略管理的内容 168 10.2.4 上层的情况和注意事项 169 10.3 通用的Audio系统实现 170 10.3.1 用桩实现的Audio硬件抽象层 172 10.3.2 提供Dump功能的Audio硬件抽象层 174 10.3.3 通用的Audio硬件抽象层 177 10.4 MSM系统的实现 178 10.4.1 Audio驱动程序 178 10.4.2 Audio硬件抽象层 180 10.5 基于OSS和ALSA的实现方式 183 10.5.1 OSS驱动程序 183 10.5.2 基于OSS的硬件抽象层 184 10.5.3 ALSA驱动程序 185 10.5.4 基于ALSA的硬件抽象层 186

第11章 视频输出系统 190 11.1 视频输出系统结构和移植内容 190 11.1.1 视频输出系统的结构 191 11.1.2 移植的内容 192 11.2 移植和调试的要点 192 11.2.1 驱动程序 192 11.2.2 硬件抽象层的内容 192 11.2.3 上层的情况和注意实现 195 11.3 Overlay硬件抽象层实现的框架 199 11.4 OMAP系统的实现 200 11.4.1 OMAP的视频输出部分的驱动程序 200 11.4.2 OMAP Overlay 硬件抽象层 202

第12章 照相机系统 205 12.1 照相机系统结构和移植内容 205 12.1.1 照相机系统的结构 206 12.1.2 移植的内容 207 12.2 移植和调试的要点 207 12.2.1 Video for 4Linux驱动程序 207 12.2.2 硬件抽象层的内容 210 12.2.3 上层的情况和注意事项 215 12.2.4 照相机系统的数据流情况 219 12.3 Camera硬件抽象层桩实现 222 12.4 MSM平台的Camera实现 226 12.4.1 MSM平台的Camera驱动程序 226 12.4.2 MSM平台的Camera硬件抽象层 227 12.5 OMAP平台的Camera实现 228 12.5.1 OMAP平台的Camera 驱动程序 228 12.5.2 OMAP平台的Camera硬件抽象层 229

第13章 无线局域网系统 230 13.1 无线局域网系统结构和移植内容 230 13.1.1 无线局域网系统的结构 231 13.1.2 移植的内容 232 13.2 移植和调试的要点 232 13.2.1 协议和驱动程序 232 13.2.2 用户空间的内容 233 13.2.3 上层的情况和调试方法 233 13.3 OMAP系统的无线局域网实现 235 13.3.1 Linux内核中的内容 235 13.3.2 用户空间的实现 236

第14章 蓝牙系统 238 14.1 蓝牙系统结构和移植内容 238 14.1.1 蓝牙系统的结构 239 14.1.2 移植的内容 240 14.2 移植和调试的要点 240 14.2.1 驱动程序 240 14.2.2 本地代码的配置部分 242 14.2.3 上层的情况和调试方法 244 14.3 MSM系统的蓝牙实现 245 14.3.1 驱动部分 245 14.3.2 用户空间的部分 247

第15章 定位系统 248 15.1 定位系统的系统结构和移植内容 248 15.1.1 定位系统的系统结构 248 15.1.2 移植的内容 250 15.2 移植和调试的要点 250 15.2.1 驱动程序 250 15.2.2 硬件抽象层 251 15.2.3 上层的情况和调试方法 253 15.3 仿真器的GPS硬件适配层实现 256 15.4 MSM平台的GPS硬件适配层实现 257

第16章 电话系统 260 16.1 电话系统结构和移植内容 260 16.1.1 电话系统的系统结构 260 16.1.2 移植的内容 262 16.2 移植和调试的要点 262 16.2.1 驱动程序 262 16.2.2 RIL实现库的接口 264 16.2.3 数据连接部分 266 16.2.4 调试方法 267 16.3 电话部分的RIL参考实现 268 16.3.1 端口初始化 268 16.3.2 AT命令处理流程 269 16.3.3 Event模块 270 16.3.4 Modem AT命令初始化 272 16.3.5 请求和响应流程的处理 272 16.3.6 特定命令类型的实现 274

第17章 OpenGL 3D引擎 276 17.1 OpenGL系统结构和移植内容 276 17.1.1 OpenGL系统的结构 277 17.1.2 移植的内容 283 17.2 移植和调试的要点 283 17.2.1 OpenGL移植层的接口 283 17.2.2 上层的情况和OpenGL的调试 285 17.2 Android软件OpenGL的实现 288 17.3 不同系统中的实现 290

第18章 OpenMax多媒体引擎 292 18.1 OpenMax系统结构和移植内容 292 18.1.1 OpenMax系统的结构 293 18.1.2 Android OpenMax实现的内容 297 18.2 OpenMax的接口与实现 297 18.2.1 OpenMax IL层的接口 297 18.2.2 OpenMax IL实现的内容 302 18.2.3 Android中OpenMax的适配层 302 18.3 OMAP平台OpenMax IL的硬件实现 304 18.3.1 TI OpenMax IL实现的结构和机制 304 18.3.2 TI OpenMax IL的核心和公共内容 306 18.3.3 一个TI OpenMax IL组件的实现 307

第19章 多媒体系统的插件 310 19.1 Android多媒体相关结构与移植内容 310 19.1.1 多媒体处理过程 311 19.1.2 移植的内容 312 19.2 OpenCore引擎结构和插件 313 19.2.1 OpenCore的结构 313 19.2.2 OpenCore的Node插件机制 314 19.2.3 OpenMax部分的结构、实现和插件结构 316 19.2.4 关于媒体输入输出类MediaIO 322 19.2.5 OpenCore Player的视频显示部分插件 325 19.3 Stagefright引擎的结构和插件 326 19.3.1 Stagefright系统结构 326 19.3.2 Stagefright对Android中OpenMax接口的实现 328 19.3.3 MediaSource插件机制 328 19.3.4 OpenMax和VideoRenderer插件机制 330 19.4 OMAP平台实现的插件 332 19.4.1 OpenCore的OpenMax插件 333 19.4.2 OpenCore的视频输出插件 334 19.4.3 Stagefright的OpenMax和视频输出插件 336

第20章 位块复制系统 339 20.1 位块复制结构和移植内容 339 20.1.1 位块复制系统的结构 339 20.1.2 移植内容 340 20.2 移植和调试的要点 340 20.2.1 驱动程序 340 20.2.2 硬件抽象层的内容 341 20.2.3 上层的情况和注意事项 342 20.3 MSM中的实现 343

第21章 警报器——实时时钟系统 346 21.1 警报器——实时时钟结构和移植内容 346 21.1.1 警报器——实时时钟系统的结构 346 21.1.2 移植内容 347 21.2 移植与调试的要点 348 21.2.1 RTC驱动程序 348 21.2.2 Alarm驱动程序 349 21.2.3 上层的情况和注意事项 349 21.3 模拟器环境中的实现 351 21.4 MSM平台的实现 351

第22章 光系统 354 22.1 光系统结构和移植内容 354 22.1.1 光系统部分的结构 354 22.1.2 移植内容 355 22.2 移植与调试的要点 356 22.2.1 驱动程序 356 22.2.2 硬件抽象层的内容 356 22.2.3 上层的情况和注意事项 357 22.3 MSM中的实现 359 22.3.1 驱动程序 359 22.3.2 硬件抽象层 359

第23章 振动器系统 361 23.1 振动器系统结构和移植内容 361 23.1.1 振动器部分的结构 361 23.1.2 移植内容 362 23.2 移植与调试的要点 363 23.2.1 驱动程序 363 23.2.2 硬件抽象层的内容 363 23.2.3 上层的情况和注意事项 364 23.3 MSM中的实现 365

第24章 电池系统 367 24.1 电池系统结构和移植内容 367 24.1.1 电池系统部分的结构 367 24.1.2 移植内容 368 24.2 移植和调试的要点 368 24.2.1 驱动程序 368 24.2.2 上层的情况和注意事项 369 24.3 模拟器中的实现 371

亚马逊链接

基本信息

名称: Android多媒体编程从初学到精通
作者信息: 作者: 苗忠良 [ 中文 pdf ]

简单介绍

《Android多媒体编程从初学到精通》内容翔实、分析深刻,是读者学习Anaroid多媒体编程不可多得的资料。从共享内存IPC通信、HAL、原生服务、JNI调用,以及多娱体的图像、音频、视频框架等多个层次和子系统着手深入讲解Android多媒体编程。涉及移动互联网、Android体系应用框架、OpenMAX多媒体框架、渲柔机制等多方面的内容。深入浅出,依靠深厚行业经验讲透技术原理循序渐进,详解典型应用案例提升实战能力

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
第1章 Android概述 1
1.1 移动互联网 2
1.1.1 “4C”融合 3
1.1.2 物联网 4
1.2 发展概况 4
1.2.1 OHA联盟 5
1.2.2 Android现状 6
1.2.3 网络资源 7
1.3 开发环境 8
1.3.1 基于SDK的开发环境 8
1.3.2 基于源代码的开发环境 12
1.4 体系架构 12
1.4.1 核心服务 13
1.4.2 原生服务 15
1.4.3 原生库 17
1.4.4 运行时组件 18
1.4.5 硬件抽象层 19
1.4.6 Linux内核 19

第2章 Android基础 26 2.1 Hello World 27 2.2 应用框架 33 2.2.1 应用组件 33 2.2.2 Activity和Tasks 55 2.2.3 进程和线程 55 2.2.4 组件生命周期 56 2.3 启动过程 58 2.3.1 init.rc初始化脚本 59 2.3.2 服务管理器 65 2.3.3 Dalvik虚拟机 67 2.3.4 实时进程 71 2.4 进程间通信 77 2.4.1 ONC RPC远程调用 78 2.4.2 IBinder通信机制 79 2.5 交互过程 80 2.5.1 Java JNI原生接口 81 2.5.2 直接调用 81 2.5.3 原生服务调用 82 2.5.4 原生守护进程调用 82 2.6 性能优化 83 2.6.1 资源读取 83 2.6.2 DEX文件和APK加载 84 2.6.3 虚拟机和平台实现 86

第3章 多核通信 88 3.1 共享内存 89 3.1.1 同步与互斥 89 3.1.2 SMD数据通信 90 3.1.3 SMSM状态通信 96 3.2 过程调用 98 3.2.1 RPC路由器 99 3.2.2 RPC管道 102

第4章 多媒体框架 106 4.1 框架概述 107 4.2 OpenMAX接口规范 107 4.2.1 OpenMAX AL应用层 108 4.2.2 OpenMAX IL集成层 108 4.2.3 OpenMAX DL开发层 113 4.3 OpenCORE框架 113 4.3.1 内容策略管理 114 4.3.2 多媒体引擎 123 4.3.3 文件解析和组合 130 4.3.4 编解码器 133 4.3.5 OSCL底层移植 139 4.3.6 A/V同步 143 4.4 Stagefright框架 145 4.5 元数据 147 4.5.1 色彩模式 147 4.5.2 脉冲调制 148

第5章 图像框架 149 5.1 Camera拍照框架 150 5.1.1 Camera原生服务 150 5.1.2 Camera的HAL接口 156 5.1.3 Camera参数的设置 160 5.2 重要数据结构 162

第6章 音频框架 164 6.1 音频管理框架 165 6.1.1 Audio Flinger 166 6.1.2 Audio Policy Service 177 6.2 音频编解码过程 180 6.2.1 AMR的编码过程 181 6.2.2 AMR的解码过程 188 6.2.3 MP3的解码过程 193

第7章 视频框架 197 7.1 Camera录像框架 198 7.2 媒体播放服务 202 7.3 视频的编解码过程 205 7.3.1 视频的编码过程 206 7.3.2 视频的解码过程 209

第8章 渲染机制 213 8.1 Surface Flinger管理器 214 8.1.1 Layer的四种模式 215 8.1.2 Surface渲染管理 220 8.2 Skia渲染 223 8.2.1 Skia图形渲染 224 8.2.2 Skia图像渲染 226 8.2.3 Skia UI控件 234 8.3 OpenGL ES渲染 235 8.4 硬件加速 238 8.4.1 Overlay 239 8.4.2 帧缓冲 240 8.4.3 MDP 242

第9章 图像应用 243 9.1 基本接口 244 9.2 图像的处理 247 9.3 动画的处理 254

第10章 音频应用 262 10.1 基本接口 263 10.2 Audio Manager 264 10.3 音频记录的处理 266 10.4 音频播放的处理 267 10.5 语音识别 277 10.6 SIP服务 281

第11章 视频应用 286 11.1 视频记录 287 11.2 视频播放 290 跋 295 后记 298 参考文献 304

亚马逊链接

基本信息

名称: Android移动开发一本就够
作者信息: 作者: Lauren Darcey [ 中文 pdf ]

简单介绍

《Android移动开发一本就够》由Lauren Darcey、Schane Conder所著,在以开放手机联盟(Open HandsetAlliance,OHA)和Google公司为先驱的开拓下,Android作为一个热门、新潮、免费、开源的移动平台在无线通信领域引起了不小的波澜,而你手中的这本书正能够为软件开发团队提供设计、开发、测试、调试和发布Android应用程序的一系列指导。如果你是一位资深的移动开发人员,那么书中一些小提示和小技巧可以帮助你更好地利用Android的某些独特功能,从而更加顺利地完成整个开发过程;相反,如果你刚刚踏入移动开发领域,那么本书将为你提供所有需要掌握的知识和技能,从而帮助你平稳而顺利地从传统软件开发过渡到移动开发,尤其是过渡到其中最富有前景的新平台——Android。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
目 录 

第一部分 Android概览

第1章 Android简介 2 1.1 移动软件开发简史 2 1.1.1 遥想当年 2 1.1.2 “砖头” 3 1.1.3 无线应用协议(WAP) 4 1.1.4 专用移动平台 6 1.2 开放手机联盟(OHA) 7 1.2.1 无线Google 8 1.2.2 成立开放手机联盟 8 1.2.3 制造商:设计Android手机 9 1.2.4 移动运营商:传播Android体验 9 1.2.5 内容提供商:开发Android应用程序 9 1.2.6 充分发挥Android的优势 10 1.3 Android平台的不同之处 10 1.3.1 Android:下一代平台 11 1.3.2 免费开放源代码 11 1.3.3 熟悉和廉价的开发工具 12 1.3.4 合理的开发人员学习曲线 12 1.3.5 强大的应用程序开发支持 12 1.3.6 丰富、安全的应用集成 13 1.3.7 无障碍发布 13 1.3.8 为应用程序提供的“自由市场” 13 1.3.9 新生并逐渐成长的平台 14 1.4 Android平台 14 1.4.1 Android的基本体系结构 14 1.4.2 安全与许可权限 16 1.4.3 开发Android应用程序 17 小结 18 参考资料和更多信息 18

第2章 搭建你的Android开发环境 19 2.1 配置你的开发环境 19 2.1.1 配置操作系统以适应设备调试 20 2.1.2 配置Android硬件以供调试 20 2.1.3 升级Android SDK 20 2.1.4 Android软件开发包的问题 21 2.2 探索Android SDK 21 2.2.1 理解Android SDK许可协议 21 2.2.2 阅读Android SDK文档 22 2.2.3 探索Android应用程序框架 23 2.2.4 了解Android工具 24 2.2.5 探索Android示例应用程序 27 小结 28 参考资料和更多信息 28

第3章 编写第一个Android应用程序 29 3.1 测试你的开发环境 29 3.1.1 在Eclipse工程中导入Snake应用程序 29 3.1.2 为Snake工程创建Android虚拟设备(AVD) 31 3.1.3 为Snake工程创建运行配置参数 31 3.1.4 在Android模拟器中运行Snake应用程序 32 3.2 构建你的第一个Android应用程序 33 3.2.1 创建和配置新的Android工程 33 3.2.2 Android应用程序的核心文件和目录 34 3.2.3 为新工程创建Android虚拟设备 35 3.2.4 为工程配置运行参数 35 3.2.5 在模拟器中运行Android应用程序 36 3.2.6 在模拟器中调试Android应用程序 37 3.2.7 为Android应用程序添加日志记录 39 3.2.8 为应用程序添加媒体支持 40 3.2.9 为应用程序添加位置服务(LBS) 42 3.2.10 在硬件上调试应用程序 43 小结 45 参考资料和更多信息 45

第二部分 Android应用程序设计精髓

第4章 剖析Android应用程序 48 4.1 掌握重要的Android术语 48 4.2 使用应用程序Context 48 4.3 使用Activity执行应用程序任务 49 4.3.1 Android Activity的生命周期 50 4.3.2 使用Intent管理Activity跳转 53 4.4 使用服务 56 4.5 接收和广播Intent 57 小结 57 参考资料和更多信息 58

第5章 使用Android Manifest文件定义应用程序 59 5.1 配置Android Manifest文件 59 5.2 管理你的应用程序标识 63 5.2.1 为你的应用程序指定版本 63 5.2.2 给你的应用程序加上名称和图标 63 5.3 强制指定应用程序的系统需求 64 5.3.1 针对特定SDK版本 64 5.3.2 强制指定应用程序平台需求 66 5.3.3 使用外部库 67 5.4 注册Activity和其他应用程序组件 68 5.4.1 使用Intent过滤器为应用程序指派主入口点Activity 68 5.4.2 配置其他Intent过滤器 68 5.5 使用许可权限 69 5.5.1 注册应用程序所需的许可权限 69 5.5.2 注册应用程序授予其他应用程序的许可权限 70 5.6 探索Manifest文件的其他参数 71 小结 71 参考资料和更多信息 71

第6章 管理应用程序资源 72 6.1 什么是资源 72 6.1.1 存储应用程序资源 72 6.1.2 理解资源目录的层级结构 72 6.1.3 资源的类型 73 6.1.4 存储不同的资源类型 74 6.1.5 使用程序访问资源 76 6.2 使用Eclipse设置简单资源 77 6.3 使用资源 79 6.3.1 使用String(字符串)资源 79 6.3.2 使用格式化的字符串资源 80 6.3.3 使用字符串数组 81 6.3.4 使用Boolean(布尔)资源 82 6.3.5 使用Integer(整型)资源 82 6.3.6 使用颜色 83 6.3.7 使用尺寸 83 6.3.8 使用简单Drawable资源 84 6.3.9 使用图像 85 6.3.10 使用动画 87 6.3.11 使用菜单 89 6.3.12 使用XML文件 90 6.3.13 使用原始文件 91 6.3.14 资源引用 91 6.3.15 使用布局(Layout) 92 6.3.16 使用样式(Style) 96 6.3.17 使用主题(Theme) 98 6.4 引用系统资源 98 小结 99 参考资料和更多信息 99

第三部分 Android用户界面设计精髓

第7章 探索用户界面屏幕元素 102 7.1 Android视图和布局简介 102 7.2 使用TextView显示文本 103 7.2.1 配置布局和尺寸 104 7.2.2 在文本中创建上下文链接 104 7.3 获取用户数据 105 7.3.1 使用EditText控件获取用户输入文本 106 7.3.2 使用Spinner控件为用户提供可选输入 109 7.4 使用按钮、多选框和单选组 110 7.4.1 使用基本按钮 110 7.4.2 使用多选框和开关(Toggle)按钮 111 7.4.3 使用RadioGroup和RadioButton 112 7.5 获取用户输入的日期和时间 114 7.6 使用指示器向用户显示数据 115 7.7 使用SeekBar调整进度 116 7.7.1 使用RatingBar显示评分数据 117 7.7.2 使用Chronometer显示时间推移 118 7.7.3 显示时间 119 7.8 为用户提供选项和上下文菜单 119 7.8.1 使用选项菜单 119 7.8.2 使用ContextMenu 121 7.9 处理用户事件 123 7.9.1 监听触摸模式状态改变 123 7.9.2 监听全屏幕上的事件 124 7.9.3 监听长时单击 124 7.9.4 监听焦点改变 125 7.10 使用对话框 126 7.10.1 探索不同类型的对话框 126 7.10.2 跟踪对话框的生命周期 127 7.10.3 使用自定义对话框 128 7.11 使用样式 128 7.12 使用主题 130 小结 131

第8章 使用布局设计用户界面 132 8.1 创建Android用户界面 132 8.1.1 使用XML资源创建布局 132 8.1.2 使用代码创建布局 133 8.2 组织用户界面 135 8.3 使用内建的布局类 138 8.3.1 使用FrameLayout 140 8.3.2 使用LinearLayout 141 8.3.3 使用RelativeLayout 142 8.3.4 使用TableLayout 144 8.3.5 在屏幕上使用多布局 145 8.4 使用内建的View容器类 146 8.4.1 使用数据驱动容器 147 8.4.2 使用标签组织视图 150 8.4.3 添加滚动支持 152 8.4.4 探索其他视图容器 153 小结 154

第9章 绘图与动画 155 9.1 屏幕绘图 155 9.2 使用文字 158 9.2.1 使用默认字体 158 9.2.2 使用自定义字体 159 9.2.3 测量文字所需的屏幕尺寸 160 9.3 使用位图 160 9.4 使用图形 161 9.4.1 用XML资源定义图形 161 9.4.2 使用程序定义图形 162 9.4.3 绘制各种图形 162 9.5 使用动画 167 9.5.1 使用逐帧动画 167 9.5.2 使用补间动画 168 小结 172

第四部分 使用常用Android API

第10章 使用Android数据和存储API 174 10.1 使用应用程序首选项 174 10.1.1 创建私有和共享首选项 174 10.1.2 搜索和读取首选项 175 10.1.3 新增、修改和删除首选项 175 10.1.4 使用Android文件系统查找首选项数据 176 10.2 使用文件和目录 177 10.2.1 探索Android应用程序目录 177 10.2.2 使用Android文件系统操作其他目录和文件 179 10.3 使用SQLite数据库存储结构化数据 180 10.3.1 创建SQLite数据库 181 10.3.2 创建、修改和删除数据库记录 183 10.3.3 在SQLite数据库中执行查询 185 10.3.4 关闭和删除SQLite数据库 189 10.3.5 设计持久数据库 189 10.3.6 向应用程序界面绑定数据 191 小结 195 参考资料和更多信息 195

第11章 使用内容提供器在应用程序间共享数据 196 11.1 探索Android内容提供器 196 11.1.1 使用MediaStore内容提供器 196 11.1.2 使用CallLog内容提供器 198 11.1.3 使用浏览器(Browser)内容提供器 199 11.1.4 使用联系簿(Contacts)内容提供器 200 11.1.5 使用UserDictionary(用户词典)内容提供器 202 11.1.6 使用Settings内容提供器 202 11.2 修改内容提供器的数据 202 11.2.1 添加记录 203 11.2.2 修改记录 203 11.2.3 删除记录 204 11.3 使用内容提供器增强你的应用程序 204 11.4 实现内容提供器 208 11.4.1 实现内容提供器接口 209 11.4.2 定义数据URI 209 11.4.3 定义数据列 210 11.4.4 实现重要的内容提供器方法 210 11.4.5 更新Manifest文件 214 11.5 使用动态文件夹(Live Folder) 215 小结 217 参考资料和更多信息 217

第12章 使用Android网络API 218 12.1 移动网络基础 218 12.2 访问因特网(HTTP) 218 12.2.1 从Web读取数据 219 12.2.2 使用HttpURLConnection 219 12.2.3 解析从网络获取的XML 220 12.2.4 异步操作 222 12.2.5 使用AsyncTask 222 12.2.6 使用线程进行网络访问 223 12.2.7 显示从网络资源获取的图像 224 12.2.8 获取Android网络状态 226 小结 227 参考资料和更多信息 227

第13章 使用Android Web API 228 13.1 使用WebView浏览Web 228 13.1.1 设计带有WebView控件的布局 229 13.1.2 向WebView控件载入内容 229 13.1.3 为WebView控件添加功能 230 13.2 使用WebKit延伸Web应用 232 13.2.1 浏览WebKit API 232 13.2.2 扩展Android Web应用程序的功能 232 13.3 使用Flash 236 13.3.1 使用Flash应用程序 236 13.3.2 构建AIR应用程序 237 小结 237 参考资料和更多信息 237

第14章 使用位置服务API 238 14.1 使用全球定位服务(GPS) 238 14.1.1 在你的应用程序中使用 GPS功能 238 14.1.2 查找你的位置 239 14.1.3 定位你的模拟器 240 14.2 位置地理编码 241 14.3 在地图上标注位置 243 14.3.1 地图标注内容 243 14.3.2 地图标注视图 244 14.3.3 获得调试API Key 245 14.3.4 拖曳地图视图 247 14.3.5 缩放地图视图 247 14.3.6 标记点 248 14.4 位置服务扩展应用 251 小结 252 参考资料和更多信息 252

第15章 使用Android多媒体API 253 15.1 使用多媒体 253 15.2 使用静态图像 254 15.2.1 使用摄像头捕捉静态图像 254 15.2.2 配置摄像头模式 257 15.2.3 分享图像 258 15.2.4 将图像指定为壁纸 259 15.3 使用视频 259 15.3.1 录制视频 260 15.3.2 播放视频 261 15.4 使用音频 262 15.4.1 录制音频 262 15.4.2 播放音频 263 15.4.3 共享音频 264 15.4.4 搜索多媒体 264 15.4.5 使用铃音 265 小结 265 参考资料和更多信息 265

第16章 使用Android电话API 266 16.1 使用电话功能 266 16.1.1 为获取手机状态信息取得许可权限 266 16.1.2 获取通话状态 267 16.1.3 请求获取服务信息 268 16.1.4 监控信号强度和数据连接速度 269 16.1.5 使用电话号码 269 16.2 使用短消息 270 16.2.1 获得发送和接收短消息的许可权限 270 16.2.2 发送短消息 270 16.2.3 接收短消息 272 16.3 拨打和接听电话 273 小结 275 参考资料和更多信息 275

第17章 通过OpenGL ES使用Android 3D图形 276 17.1 使用OpenGL ES 276 17.1.1 在Android中使用OpenGL ES 276 17.1.2 保证设备兼容性 277 17.2 在Android SDK中使用OpenGL ES API 277 17.3 手工处理OpenGL ES任务 278 17.3.1 创建SurfaceView 278 17.3.2 启动OpenGL ES线程 279 17.3.3 初始化EGL 281 17.3.4 初始化GL 282 17.3.5 屏幕绘制 283 17.4 绘制3D物体 283 17.4.1 绘制顶点(Vertices) 283 17.4.2 为顶点着色 284 17.4.3 绘制更多复杂物体 285 17.4.4 照亮你的场景 286 17.4.5 为对象赋予材质 288 17.5 同Android视图和事件进行交互 289 17.5.1 允许OpenGL线程向应用程序线程发送信息 289 17.5.2 允许应用程序线程向OpenGL线程发送信息 290 17.6 清理OpenGL ES 291 17.7 使用GLSurfaceView 292 17.8 使用OpenGL ES 2.0 294 17.8.1 为OpenGL ES 2.0配置应用程序 295 17.8.2 获取OpenGL ES 2.0平面 295 小结 298 参考资料和更多信息 298

第18章 使用Android NDK 299 18.1 何时使用Android NDK 299 18.2 安装Android NDK 300 18.3 探索Android NDK 300 18.4 创建自己的NDK工程 300 18.4.1 使用Java调用原生代码 301 18.4.2 处理参数和返回值 302 18.4.3 在原生代码中使用异常 303 18.5 提升图形处理性能 304 小结 305 参考资料和更多信息 305

第19章 使用Android可选硬件API 306 19.1 与设备硬件进行交互 306 19.2 使用设备传感器 307 19.2.1 使用不同的传感器 307 19.2.2 获取对传感器的访问 307 19.2.3 读取传感器数据 308 19.2.4 校正传感器 309 19.2.5 确定设备的方向 309 19.2.6 指北 309 19.3 使用Wi-Fi 309 19.4 使用蓝牙 311 19.4.1 检查可用的蓝牙硬件 312 19.4.2 开启蓝牙 312 19.4.3 查询配对设备 313 19.4.4 搜索设备 313 19.4.5 建立设备间连接 313 19.5 监视电池 314 小结 316 参考资料和更多信息 316

第五部分 更多Android应用程序设计原则

第20章 使用通知 318 20.1 向用户发出通知 318 20.2 使用状态栏发布通知 319 20.2.1 使用NotificationManager服务 319 20.2.2 创建一个带有图标的简单文本通知 319 20.2.3 使用通知队列 320 20.2.4 更新通知 321 20.2.5 清除通知 321 20.3 让手机震动 322 20.4 灯光闪烁 323 20.5 发出声响 324 20.6 自定义通知 324 20.7 设计有用的通知 326 小结 326 参考资料和更多信息 326

第21章 使用服务 327 21.1 何时使用服务 327 21.2 理解服务的生命周期 328 21.3 创建服务 328 21.4 控制服务 332 21.5 实现远程接口 333 21.6 实现可包装(Parcelable)类 335 小结 337 参考资料和更多信息 337

第22章 扩展Android应用程序 338 22.1 增强你的应用程序 338 22.2 使用应用程序小插件 339 22.2.1 创建应用程序小插件 339 22.2.2 安装应用程序小插件 345 22.2.3 成为小插件“宿主(Host)” 345 22.3 使用动态壁纸(Live Wallpaper) 345 22.3.1 创建动态壁纸 346 22.3.2 安装动态壁纸 348 22.4 成为内容类型处理器(Content Type Handler) 349 22.5 确定Intent动作和MIME类型 350 22.5.1 实现Activity处理Intent 350 22.5.2 注册Intent过滤器 351 22.6 让应用程序的内容可搜索 352 22.6.1 在应用程序内启用搜索 353 22.6.2 启用全局搜索 358 22.7 使用动态文件夹 360 22.7.1 创建动态文件夹 360 22.7.2 安装动态文件夹 364 小结 365 参考资料和更多信息 365

第23章 用户账户管理与数据同步 366 23.1 使用账户管理器管理账户 366 23.2 使用备份服务 367 23.2.1 选择远程备份服务 368 23.2.2 实现备份代理(Agent) 368 23.2.3 备份和恢复应用程序数据 371 小结 372 参考资料和更多信息 373

第24章 处理高级用户输入 374 24.1 使用文本输入法 374 24.1.1 使用软键盘 374 24.1.2 使用文本预测和用户词典 376 24.2 探索辅助功能(Accessibility)框架 376 24.2.1 使用语音识别服务 377 24.2.2 使用语音合成(TTS)服务 378 24.3 使用手势 380 24.4 处理普通单点触控手势 381 24.4.1 处理普通多点触控手势 385 24.4.2 让手势更自然 388 24.5 使用轨迹球 388 24.6 处理屏幕方向改变 388 小结 390 参考资料和更多信息 390

第25章 面向不同设备配置和语言 391 25.1 最大化应用程序兼容性 391 25.2 为兼容性设计用户界面 392 25.2.1 支持特定屏幕类型 393 25.2.2 使用九格拉伸图像 393 25.2.3 使用Working Square原理 395 25.3 提供应用程序替代资源 396 25.3.1 使用替代资源标识符 396 25.3.2 提供用于不同屏幕方向的资源 399 25.3.3 在程序中使用替代资源 400 25.3.4 高效地组织应用程序资源 400 25.4 应用程序国际化 401 25.4.1 使用替代资源实现国际化 401 25.4.2 在程序中实现本地化支持 404 25.5 面向不同设备配置 405 25.5.1 支持硬件配置 405 25.5.2 面向不同Android SDK版本 405 小结 407 参考资料和更多信息 408

第六部分 对外发布你的Android应用程序 第26章 移动软件开发过程 410 26.1 移动开发过程概览 410 26.2 选择一种软件开发方法 410 26.2.1 理解“瀑布模型”的危险 411 26.2.2 认识迭代式开发的价值 411 26.3 整合应用程序需求 411 26.3.1 确定工程需求 411 26.3.2 为移动应用程序开发用例 413 26.3.3 吸纳第三方需求 413 26.3.4 管理设备数据库 413 26.4 项目风险评估 415 26.4.1 确定目标设备 415 26.4.2 获取目标设备 416 26.4.3 确定应用程序需求的可行性 417 26.4.4 理解质量保障的风险 417 26.5 编写基本项目文档 418 26.6 使用配置管理系统 419 26.7 设计移动应用程序 420 26.7.1 认识移动设备的局限 420 26.7.2 移动应用程序体系结构探索 420 26.7.3 可扩展和维护设计 421 26.7.4 应用程序交互设计 422 26.8 开发移动应用程序 422 26.9 测试移动应用程序 422 26.10 发布移动应用程序 423 26.11 支持和维护移动应用程序 423 小结 424 参考资料和更多信息 424

第27章 设计和开发“防弹”Android应用程序 425 27.1 “防弹”移动应用程序设计最佳实践 425 27.1.1 满足移动用户的需求 425 27.1.2 为移动设备设计用户界面 426 27.1.3 设计稳定、灵敏的移动应用程序 426 27.1.4 设计安全的移动应用程序 427 27.1.5 在设计移动应用程序时考虑利益的最大化 428 27.1.6 在Android应用程序设计时使用第三方标准 428 27.1.7 设计便于维护和升级的移动应用程序 429 27.1.8 在应用程序设计中使用Andriod工具 430 27.1.9 避免设计时的愚蠢错误 430 27.2 “防弹”移动应用程序开发最佳实践 431 27.2.1 设计有效的移动开发过程 431 27.2.2 提早和经常地测试应用程序可行性 431 27.2.3 使用代码标准、代码检查和单元测试以提高代码质量 431 27.2.4 处理某单一设备的缺陷 433 27.2.5 在应用程序开发中使用Android工具 434 27.2.6 避免开发时的愚蠢错误 434 小结 434 参考资料和更多信息 434

第28章 测试Android应用程序 435 28.1 设计一个应用程序漏洞跟踪系统 435 28.2 管理测试环境 436 28.3 尽量全面地进行测试 438 28.4 在应用程序测试中使用Android工具 442 28.5 避免测试时的愚蠢错误 443 28.6 外包测试的责任 443 小结 443 参考资料和更多信息 443

第29章 销售你的Android应用程序 444 29.1 选择合适的发布模式 444 29.2 为发布而打包你的应用程序 444 29.2.1 准备封装你的代码 445 29.2.2 为你的应用程序打包并签名 446 29.2.3 测试软件包的发布版本 448 29.2.4 认证你的Android应用程序 448 29.3 发布你的应用程序 448 29.3.1 在Android Market上销售你的应用程序 448 29.3.2 在自己的服务器上销售你的应用程序 453 29.3.3 销售应用程序的其他途径 453 29.3.4 保护你的知识产权 454 29.3.5 让用户付费 454 小结 455 参考资料和更多信息 455

第七部分 附录

附录A Android模拟器快速入门 458 A.1 模拟器的目的:虚拟现实 458 A.2 使用Android虚拟设备(AVD) 459 A.2.1 使用Android SDK和AVD管理器 460 A.2.2 创建AVD 460 A.3 使用指定AVD启动模拟器 463 A.3.1 配置模拟器启动项 463 A.3.2 启动模拟器运行应用程序 463 A.3.3 从Android SDK和AVD管理器中启动模拟器 464 A.4 配置模拟器的GPS位置信息 465 A.5 在两个模拟器实例之间拨打电话 466 A.6 在两个模拟器实例之间发送消息 466 A.7 通过控制台与模拟器交互 467 A.7.1 使用控制台模拟来电 467 A.7.2 使用控制台模拟短消息 468 A.7.3 使用控制台发送GPS坐标 468 A.7.4 使用控制台监视网络状态 469 A.7.5 使用控制台操作电源设置 469 A.7.6 使用其他控制台命令 470 A.8 享受模拟器 470 A.9 认识模拟器的局限 470

附录B Android DDMS快速入门 471 B.1 独立或结合Eclipse使用DDMS 471 B.2 熟悉DDMS的关键特性 472 B.3 使用进程 472 B.3.1 向Android应用程序关联调试器 473 B.3.2 监视Android应用程序的线程活动 473 B.3.3 触发垃圾回收(GC) 474 B.3.4 监视堆活动 474 B.3.5 监视内存分配 474 B.3.6 终止Android进程 475 B.4 使用文件浏览器 475 B.4.1 浏览模拟器或设备上的文件系统 475 B.4.2 从模拟器或设备上拷贝文件 476 B.4.3 向模拟器或设备拷贝文件 476 B.4.4 删除模拟器或设备上的文件 476 B.5 使用模拟器控制 476 B.5.1 模拟语音来电 476 B.5.2 模拟短消息接收 477 B.5.3 发送位置坐标 477 B.6 使用应用程序日志 477 B.7 在模拟器或目标设备上截屏 478

附录C Android调试桥快速入门 479 C.1 列表显示连接的设备和模拟器 479 C.2 针对特定设备使用ADB命令 479 C.3 启动和停止ADB服务进程 480 C.3.1 停止ADB服务进程 480 C.3.2 启动和检测ADB服务进程 480 C.4 发布Shell命令 480 C.4.1 发布单条Shell命令 480 C.4.2 使用Shell会话 481 C.4.3 使用Shell启动和终止模拟器 481 C.5 拷贝文件 481 C.5.1 向设备或模拟器发送文件 481 C.5.2 从设备提取文件 481 C.6 安装和卸载Android应用程序 482 C.6.1 安装应用程序 482 C.6.2 重装应用程序 482 C.6.3 卸载应用程序 482 C.7 使用LogCat记录日志 483 C.7.1 显示所有的日志信息 483 C.7.2 在日志数据中包含日期和时间信息 483 C.7.3 过滤日志信息 483 C.7.4 清除日志 484 C.7.5 将日志输出重定向至一个文件 484 C.7.6 访问次级日志 485 C.8 控制备份服务 485 C.8.1 强制备份操作 485 C.8.2 强制恢复操作 486 C.8.3 将存档数据清空 486 C.9 生成Bug报告 486 C.10 使用Shell查看SQLite数据库 486 C.10.1 在ADB Shell中进行应用程序压力测试 486 C.10.2 通过Shell安装和使用自定义二进制文件 489 C.11 其他ADB命令探索 490

附录D Eclipse技巧和诀窍 491 D.1 构建你的Eclipse工作空间 491 D.1.1 集成源代码管理服务 491 D.1.2 调整视图中的标签面板 491 D.1.3 最大化窗口 492 D.1.4 最小化窗口 492 D.1.5 显示并排窗口 492 D.1.6 显示同一文件的两个部分 492 D.1.7 关掉不需要的标签面板 492 D.1.8 保持对窗口的控制 492 D.1.9 定制日志过滤器 493 D.2 编写Java代码 493 D.2.1 善用自动补全(Auto-Complete) 493 D.2.2 格式化代码 493 D.2.3 创建类 494 D.2.4 创建方法存根(stub) 494 D.2.5 组织导入 494 D.2.6 重命名 494 D.2.7 重构代码 494 D.2.8 整理代码 496 D.2.9 提供Javadoc风格的文件 496 D.2.10 解决诡异的构建错误 496

附录E SQLite快速入门 497 E.1 探索SQLite的常见任务 497 E.2 使用sqlite3命令行接口 497 E.2.1 运行ADB Shell 498 E.2.2 连接数据库 498 E.2.3 探索你的数据库 498 E.2.4 导入和导出数据库 499 E.2.5 在命令行中执行SQL命令 501 E.2.6 使用其他的sqlite3命令 502 E.2.7 认识SQLite的局限 502 E.3 通过实例学习:学生成绩数据库 503 E.3.1 设计学生成绩数据库的模式 503 E.3.2 结合AUTOINCREMENT创建简单表 503 E.3.3 向表中插入数据 504 E.3.4 使用SELECT查询表数据 504 E.3.5 创建具有外键和复合主键的表 505 E.3.6 修改和更新表数据 506 E.3.7 使用JOIN进行多表查询 506 E.3.8 使用计算列 507 E.3.9 对计算列使用子查询 508 E.3.10 删除表 508

亚马逊链接

基本信息

名称: C语言参考手册(原书第5版)
作者信息: 作者: 徐波 [ 中文 pdf ]

简单介绍

《C语言参考手册(原书第5版)》是一本C语言的权威参考手册,对C语言的基本概念和运行函数库提供了完整的描述,并强调了以正确性、可移性和可维护性为基本出发点的良好编程风格。《C语言参考手册(原书第5版)》对C语言描述比其他任何书籍都要更加清晰和详细。《C语言参考手册(原书第5版)》涵盖的内容包括:标准C(1999):新版本的C标准支持复数型和布尔类型、可变长度数组、精确浮点编程以及为可移植性国际化所提供的新函数库。标准C(1989):当今大部分C程序员所使用的C语言版本。传统C:1990年以前人们所使用的C语言。目前仍有数以百万行计的传统C代码还在使用中。C++和C的兼容:可以同时用于C和C++的代码。适用于所有C语言版本的C运行时函数库。《C语言参考手册(原书第5版)》对C的所有细节都进行了描述,是C语言编程人员和编译器实现者必备的参考手册。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
译者序
前 言
第一部分 c语言
第1章 概述
1.1 c语言的演变
1.1.1 传统c
1.1.2 标准c(1989)
1.1.3 标准c(1995)
1.1.4 标准c(1999)
1.1.5 标准c++
1.1.6 《c语言参考手册(原书第5版)》内容
1.2 应该使用哪种c语言
1.3 c编程概述
1.4 一致性
1.5 语法约定

第2章 词法元素 2.1 字符集 2.1.1 执行字符集 2.1.2 空白字符和行终止符 2.1.3 字符编码 2.1.4 三字符组 2.1.5 多字节字符和宽字符 2.2 注释 2.3 标记 2.4 操作符和分隔符 2.5 标识符 2.6 关键字 2.7 常量 2.7.1 整数常量 2.7.2 浮点数常量 2.7.3 字符常量 2.7.4 字符串常量 2.7.5 转义字符 2.7.6 字符转义码 2.7.7 数值转义码 2.8 c++兼容性 2.8.1 字符集 2.8.2 注释 2.8.3 操作符 2.8.4 标识符和关键字 2.8.5 字符常量 2.9 关于字符集、指令集和编码 2.10 练习

第3章 c预处理器 3.1 预处理器命令 3.2 预处理器词法约定 3.3 定义和替换 3.3.1 类似对象的宏定义 3.3.2 定义带参数的宏 3.3.3 宏表达式的重新扫描 3.3.4 预定义的宏 3.3.5 取消宏定义和重新定义宏 3.3.6 宏展开的优先级错误 3.3.7 宏参数的副作用 3.3.8 把标记转换为字符串 3.3.9 宏展开中的标记合并 3.3.10 宏的可变参数列表 3.3.11 其他问题 3.4 文件包含 3.5 条件编译 3.5.1 #if、#else和#endif命令 3.5.2 #elif命令 3.5.3 #ifdef和#ifndef命令 3.5.4 条件命令中的常量表达式 3.5.5 defined操作符 3.6 显式的行号 3.7 pragma指令 3.7.1 标准pragma命令 3.7.2 标准pragma指令的位置 3.7.3 pragma操作符 3.8 错误指令 3.9 c++兼容性 3.10 练习

第4章 声明 第5章 类型 第6章 转换和表示形式 第7章 表达式 第8章 语句 第9章 函数

第二部分 c函数库 第10章 函数库简介 第11章 标准语言附加 第12章 字符处理 第13章 字符串处理 第14章 内存函数 第15章 输入/输出工具 第16章 基本工具 第17章 数学函数 第18章 时间和日期函数 第19章 控制函数 第20章 区域 第21章 扩展整数类型 第22章 浮点环境 第23章 复数运算 第24章 宽字符和多字节字符工具 附录a ascii字符集 附录b 语法 附录c 练习答案

亚马逊链接

基本信息

名称: Android开发权威指南
作者信息: 作者: 李宁 [ 中文 pdf ]

简单介绍

《Android开发权威指南》内容全面,不仅详细讲解了Android框架、Android控件、用户界面开发、游戏开发、数据存储和网络开发等,还深入阐述了传感器、语音识别、桌面组件开发、多媒体开发、OpenGL ES、HTML5、Android NDK编程、Android平台测试等高级知识。《Android开发权威指南》注重对实际动手能力的指导,在容易产生错误、不易理解的环节都配以了详实的开发情景截图,并将重要的知识点、开发技巧以“多学一招”、“扩展学习”、“技巧点拨”等活泼的形式呈现给读者。体现创新的6大综合案例,如新浪微博客户端、蓝牙聊天、全键盘输入弦、月球登陆游戏、贪吃蛇游戏、笑脸连连看游戏。6大完整综合案例:新浪微博客户端、蓝牙聊天、全键盘输入法、月球登陆游戏、贪吃蛇游戏、笑脸连连看游戏。《Android开发权威指南》基于最新的Android 2.3 SDK。分析常用控件和API的源代码,帮助读者更深入地了解其内部实现原理。超过200个例子、50000行代码。大多数实例稍加改动就可用于实际的项目中。开发视频讲解光盘,帮助读者快速、无障碍地学通Android实战开发。从事一线开发的作者提供微博、博客等在线答疑。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
第一部分 准备篇
第1章 初识庐山真面目——Android开发简介 2
1.1 Android的基本概念 2
1.1.1 Android简介 2
1.1.2 Android的版本 4
1.1.3 Android的系统构架 5
1.1.4 Android的应用程序框架 6
1.2 JIL Widget介绍 7
1.3 小结 8

第2章 工欲善其事,必先利其器——搭建和使用Android开发环境 9 2.1 开发包及工具的安装 9 2.1.1 开发Android程序都需要些什么 9 2.1.2 安装JDK和配置Java开发环境 10 2.1.3 Eclipse的安装与汉化 11 2.1.4 安装AndroidSDK 12 2.1.5 安装Eclipse插件ADT 13 2.2 真实体验——编写第一个Android程序(随机绘制圆饼) 15 2.2.1 创建Android工程 15 2.2.2 在模拟器中运行Android程序 17 2.2.3 界面控件的布局 19 2.2.4 编写代码 20 2.2.5 调试程序 23 2.2.6 在手机上运行和调试程序 28 2.3 迁移Android工程可能发生的错误 29 2.4 不需要写一行代码的开发工具:AppInventor 31 2.4.1 AppInventor简介 31 2.4.2 AppIntentor的下载和安装 31 2.4.3 用拖曳控件的方式设计界面 33 2.4.4 像拼图一样拼装代码 34 2.5 小结 37

第二部分 基础篇 第3章 千里之行始于足下——Android程序设计基础 40 3.1 Android应用程序框架 40 3.1.1 Android项目的目录结构 40 3.1.2 AndroidManifest.xml文件的结构 42 3.2 Android应用程序中的资源 44 3.3 Android的应用程序组件 44 3.3.1 Activity(Android的窗体) 45 3.3.2 Service(服务) 45 3.3.3 Broadcast Receiver(广播接收器) 45 3.3.4 Content Provider(内容提供者) 46 3.4 Android程序的UI设计 46 3.4.1 手工配置XML布局文件 46 3.4.2 ADT自带的可视化UI设计器 47 3.4.3 使用DroidDraw设计UI布局 47 3.5 小结 48

第4章 我的UI我做主——用户界面开发基础 49 4.1 Activity的使用方法 49 4.1.1 创建Activity 49 4.1.2 配置Activity 50 4.1.3 显示其他的Activity(Intent与Activity) 52 4.2 Activity的生命周期 55 4.3 在不同Activity之间传递数据 60 4.3.1 使用Intent传递数据 60 4.3.2 使用静态变量传递数据 62 4.3.3 使用剪切板传递数据 63 4.3.4 使用全局对象传递数据 65 4.3.5 返回数据到前一个Activity 67 4.4 视图(View) 68 4.4.1 视图简介 68 4.4.2 使用XML布局文件定义视图 69 4.4.3 在代码中控制视图 70 4.5 布局(Layout) 72 4.5.1 框架布局(FrameLayout) 72 4.5.2 线性布局(LinearLayout) 75 4.5.3 相对布局(RelativeLayout) 79 4.5.4 表格布局(TableLayout) 81 4.5.5 绝对布局(AbsoluteLayout) 82 4.5.6 重用XML布局文件 82 4.5.7 优化XML布局文件 85 4.5.8 查看apk文件中的布局 86 4.6 小结 87

第5章 良好的学习开端——控件(Widget)详解 88 5.1 常用XML属性解析 88 5.1.1 android:id属性 88 5.1.2 控件的宽度(android:layout_width)和高度(android:layout_height) 88 5.1.3 android:layout_margin属性 89 5.1.4 android:padding属性 89 5.1.5 android:layout_weight属性 90 5.1.6 android:layout_gravity和android:gravity属性 90 5.1.7 android:visibility属性 91 5.1.8 android:background属性 91 5.1.9 指定单击事件方法(android:onClick属性) 92 5.1.10 控件焦点属性(android:focusable和android:focusable-InTouchMode) 92 5.2 TextView(显示文本的控件) 93 5.2.1 显示富文本(URL、不同大小、字体、颜色的文本) 93 5.2.2 在TextView中显示表情图像和文字 97 5.2.3 单击链接弹出Activity 100 5.2.4 为指定文本添加背景 103 5.2.5 带边框的TextView 106 5.2.6 设置行间距 110 5.2.7 在未显示完的文本后面加省略号(…) 111 5.2.8 用TextView实现走马灯效果 113 5.2.9 垂直滚动TextView中的文本 114 5.3 EditText(编辑文本的控件) 115 5.3.1 像QQ一样输入表情图像 115 5.3.2 在EditText中输入特定的字符 117 5.3.3 AutoCompleteText-View(自动完成输入内容的控件) 118 5.4 按钮和复选框控件 120 5.4.1 Button(普通按钮控件) 120 5.4.2 图文混排的按钮 122 5.4.3 ImageButton(图像按钮控件) 124 5.4.4 RadioButton(选项按钮控件) 124 5.4.5 ToggleButton(开关状态按钮控件) 125 5.4.6 CheckBox(复选框控件) 126 5.5 ImageView(显示图像的控件) 128 5.5.1 ImageView控件的基本用法 128 5.5.2 显示指定区域的图像 129 5.5.3 缩放和旋转图像 132 5.6 时间与日期控件 133 5.6.1 DatePicker(输入日期的控件) 133 5.6.2 TimePicker(输入时间的控件) 134 5.6.3 DatePicker、TimePicker与TextView同步显示日期和时间 134 5.6.4 AnalogClock和DigitalClock(显示时钟的控件) 136 5.7 进度条控件 137 5.7.1 ProgressBar(进度条控件) 137 5.7.2 SeekBar(拖动条控件) 139 5.7.3 设置ProgressBar和SeekBar的颜色及背景图 140 5.7.4 RatingBar(评分控件) 143 5.8 列表控件 145 5.8.1 ListView(普通列表控件) 145 5.8.2 为ListView列表项添加复选框和选项按钮 147 5.8.3 对列表项进行增、删、改操作 149 5.8.4 改变列表项的背景色 153 5.8.5 ListActivity(封装ListView的Activity) 154 5.8.6 ExpandableListView(可扩展的列表控件) 155 5.8.7 Spinner(下拉列表控件) 157 5.9 滚动控件 160 5.9.1 ScrollView(垂直滚动控件) 160 5.9.2 HorizontalScrollView(水平滚动控件) 161 5.9.3 可垂直和水平滚动的视图 162 5.9.4 Gallery(画廊控件) 163 5.10 ImageSwitcher(图像切换控件) 164 5.11 GridView(网格控件) 166 5.12 TabHost(标签控件) 168 5.13 ViewStub(惰性装载控件) 169 5.14 小结 171

第6章 友好的菜单——Menu介绍与实例 172 6.1 菜单的基本用法 172 6.1.1 创建选项菜单(Options Menu) 172 6.1.2 带图像的选项菜单 173 6.1.3 关联Activity 173 6.1.4 响应菜单的单击动作 174 6.1.5 动态添加、修改和删除选项菜单 175 6.1.6 带复选框和选项按钮的子菜单 176 6.1.7 上下文菜单 178 6.1.8 菜单事件 179 6.1.9 从菜单资源中装载菜单 180 6.2 菜单特效 181 6.2.1 自定义菜单 181 6.2.2 模拟UCWeb效果菜单 184 6.2.3 QuickContactBadge与联系人菜单 189 6.3 小结 192

第7章 友好地互动交流——信息提醒(对话框、Toast与Notification) 193 7.1 对话框的基本用法 193 7.1.1 带2个按钮(确认/取消)的对话框 193 7.1.2 带3个按钮(覆盖/忽略/取消)的对话框 195 7.1.3 简单列表对话框 196 7.1.4 单选列表对话框 198 7.1.5 多选列表对话框 199 7.1.6 进度对话框 201 7.1.7 登录对话框 205 7.1.8 使用Activity托管对话框 207 7.2 对话框的高级应用 209 7.2.1 阻止单击按钮关闭对话框 209 7.2.2 改变对话框的显示位置 213 7.2.3 在对话框按钮和内容文本中插入图像 215 7.2.4 改变对话框的透明度 216 7.3 Toast 217 7.3.1 Toast的基本用法 217 7.3.2 永不关闭的Toast 218 7.3.3 用PopupWindow模拟Toast提示信息框 221 7.4 通知(Notification) 221 7.4.1 在状态栏上显示通知信息 222 7.4.2 Notification的清除动作 224 7.4.3 永久存在的Notification 225 7.4.4 自定义Notification 226 7.5 小结 227

第8章 移动的信息仓库——数据存储 228 8.1 读写key-value对:SharedPreferences 228 8.1.1 SharedPreferences的基本用法 228 8.1.2 数据的存储位置和格式 229 8.1.3 存取复杂类型的数据 230 8.1.4 设置数据文件的访问权限 233 8.1.5 可以保存设置的Activity:PreferenceActivity 234 8.2 文件存储 238 8.2.1 openFileOutput和openFileInput方法 238 8.2.2 读写SD卡中的文件 239 8.2.3 SAX引擎读取XML文件的原理 241 8.2.4 将XML文件转换成Java对象 242 8.2.5 文件压缩(Jar、Zip) 245 8.3 SQLite数据库 249 8.3.1 SQLite数据库管理工具 249 8.3.2 SQLiteOpenHelper类与自动升级数据库 251 8.3.3 数据绑定与SimpleCursorAdapter类 252 8.3.4 操作SD卡上的数据库 255 8.3.5 将数据库与应用程序一起发布 256 8.3.6 内存数据库 257 8.4 小结 258

第9章 Android中的窗口——Activity 259 9.1 调用其他程序中的Activity 259 9.1.1 直接拨号 259 9.1.2 将电话号传入拨号程序 259 9.1.3 调用拨号程序 260 9.1.4 浏览网页 261 9.1.5 向E-mail客户端传递E-mail地址 261 9.1.6 发送E-mail 261 9.1.7 查看联系人 262 9.1.8 显示系统设置界面(设置主界面、Wifi设置界面) 263 9.1.9 启动处理音频的程序 264 9.2 自定义Activity Action 264 9.3 Activity的高级应用 266 9.3.1 ActivityGroup 266 9.3.2 自定义半透明窗口 268 9.3.3 Activity之间切换的动画效果 269 9.4 小结 270

第10章 全局事件——广播(Broadcast) 271 10.1 什么是广播 271 10.2 接收系统广播 272 10.2.1 短信拦截 272 10.2.2 用代码注册广播接收器 274 10.2.3 广播接收器的优先级 275 10.2.4 来去电拦截 276 10.2.5 截获屏幕休眠与唤醒 280 10.2.6 开机自动运行 281 10.2.7 显示手机电池的当前电量 282 10.3 发送广播 284 10.4 验证广播接收器是否注册 285 10.5 小结 286

第11章 跨应用数据源——Content Provider 287 11.1 Content Provider的作用 287 11.2 获得系统数据 288 11.2.1 读取联系人信息 288 11.2.2 查看收到的短信 290 11.3 自定义Content Provider 291 11.3.1 查询城市信息 291 11.3.2 为Content Provider添加访问权限 297 11.4 小结 298

第12章 一切为用户服务——Service基础与实例 299 12.1 Service基础 299 12.1.1 Service的生命周期 299 12.1.2 绑定Activity和Service 302 12.1.3 开机启动Service 305 12.1.4 判断Service是否已注册 306 12.1.5 判断Service是否已开始 307 12.2 跨进程访问(AIDL服务) 308 12.2.1 什么是AIDL服务 308 12.2.2 建立AIDL服务的步骤 308 12.2.3 建立AIDL服务 308 12.2.4 传递复杂数据的AIDL服务 312 12.2.5 AIDL与来去电自动挂断 317 12.3 小结 319

第13章 做好应用桥梁——网络与通信 320 13.1 WebView控件 320 13.1.1 用WebView控件浏览网页 320 13.1.2 用WebView控件装载HTML代码 322 13.2 访问HTTP资源 324 13.2.1 提交HTTP GET和HTTP POST请求 324 13.2.2 HttpURLConnection类 326 13.2.3 上传文件 327 13.3 客户端Socket 330 13.3.1 连接服务器 331 13.3.2 扫描服务器打开的端口 331 13.3.3 发送和接收数据 333 13.3.4 获得无线路由分配给手机的IP地址 334 13.3.5 设置Socket选项 335 13.4 服务端Socket 339 13.4.1 手机服务器的实现 339 13.4.2 利用Socket在应用程序之间通信 340 13.5 蓝牙通信 342 13.5.1 蓝牙简介 342 13.5.2 打开和关闭蓝牙设备 343 13.5.3 搜索蓝牙设备 344 13.5.4 蓝牙数据传输 346 13.6 小结 351

第14章 炫酷你的应用——多媒体开发 352 14.1 音乐 352 14.1.1 播放音乐 352 14.1.2 录音 353 14.2 视频 354 14.2.1 使用VideoView播放视频 354 14.2.2 使用SurfaceView播放视频 355 14.2.3 录制视频 357 14.3 相机 357 14.3.1 调用系统的拍照功能 358 14.3.2 自定义拍照功能 359 14.4 铃声 364 14.5 小结 366

第15章 2D游戏开发 367 15.1 绘制游戏的画布 367 15.1.1 在View上实现动画效果 367 15.1.2 在SurfaceView上实现动画效果 371 15.2 图形绘制基础 374 15.2.1 绘制像素点 374 15.2.2 绘制直线 374 15.2.3 绘制圆形 375 15.2.4 绘制弧 375 15.2.5 绘制文本 376 15.2.6 综合绘制各种图形 376 15.3 高级图像处理技术 380 15.3.1 绘制位图 380 15.3.2 图像的透明度 382 15.3.3 旋转图像 383 15.3.4 路径 384 15.3.5 Shader的渲染效果 388 15.4 帧(Frame)动画 392 15.4.1 AnimationDrawable与帧动画 392 15.4.2 播放Gif动画 394 15.5 补间(Tween)动画 397 15.5.1 移动补间动画 397 15.5.2 缩放补间动画 399 15.5.3 旋转补间动画 402 15.5.4 透明度补间动画 403 15.6 小结 404

第16章 有趣的Android应用 405 16.1 传感器 405 16.1.1 如何使用传感器 405 16.1.2 加速度传感器(Accelerometer) 409 16.1.3 重力传感器(Gravity) 409 16.1.4 光线传感器(Light) 410 16.1.5 陀螺仪传感器(Gyroscope) 411 16.1.6 方向传感器(Orientation) 411 16.1.7 其他传感器 412 16.2 输入输出技术 413 16.2.1 语音识别 413 16.2.2 手势输入 415 16.2.3 语音朗读(TTS) 417 16.3 Google地图 419 16.4 GPS定位 423 16.5 桌面上的小东西 425 16.5.1 窗口小部件(AppWidget) 425 16.5.2 快捷方式 431 16.5.3 实时文件夹 433 16.6 应用更华丽——动态壁纸 435 16.7 小结 441

第三部分 高级篇 第17章 HTML5与移动Web开发 444 17.1 HTML5简介 444 17.2 HTML5精彩效果演示 445 17.3 HTML5在Android中的应用 447 17.4 HTML5的画布(Canvas) 448 17.4.1 Canvas概述 448 17.4.2 检测浏览器是否支持Canvas 449 17.4.3 在Web页面中使用Canvas 450 17.4.4 使用路径(Path) 452 17.4.5 设置线条风格 453 17.4.6 设置填充类型 453 17.4.7 填充矩形区域 454 17.4.8 使用渐变色(Gradient) 454 17.4.9 拉伸画布对象 455 17.4.10 在Canvas上绘制文本 456 17.4.11 使用阴影 457 17.5 调试JavaScript 458 17.6 小结 459

第18章 输入法开发 460 18.1 Android输入法简介 460 18.2 控制输入法 461 18.3 输入法实战 462 18.3.1 实现输入法的步骤 463 18.3.2 编写输入法程序 463 18.3.3 输入法服务的生命周期 466 18.3.4 预输入文本 467 18.3.5 输入法设置 467 18.4 小结 468

第19章 Android OpenGL ES开发基础 469 19.1 OpenGL简介 469 19.2 什么是OpenGL ES 469 19.3 多边形 470 19.4 颜色 474 19.5 旋转三角形 475 19.6 旋转立方体 477 19.7 小结 478

第20章 OpenGL ES的超酷效果 479 20.1 保持平衡的旋转文本 479 20.2 左右摇摆的Android机器人 482 20.3 纠缠在一起的旋转立方体 485 20.4 透明背景的旋转立方体 486 20.5 触摸旋转的立方体 487 20.6 2D和3D的综合旋转效果 489 20.7 旋转立体天空 491 20.8 小结 493

第21章 Android NDK编程 494 21.1 Android NDK简介 494 21.2 安装、配置和测试NDK开发环境 495 21.2.1 系统和软件要求 495 21.2.2 下载和安装Android NDK 495 21.2.3 下载和安装Cygwin 495 21.2.4 配置Android NDK的开发环境 498 21.3 第一个NDK程序:世界你好 499 21.3.1 编写和调用NDK程序 499 21.3.2 用命令行方式编译NDK程序 501 21.3.3 在Eclipse中集成Android NDK 502 21.4 背景不断变化的三角形(NDK 版OpenGL ES) 504 21.5 使用NDK OpenGL ES API实现千变万化的3D效果 507 21.6 使用NDK调用音频API 510 21.7 本地Activity(Native Activity) 511 21.8 Android NDK配置文件详解 513 21.8.1 Android NDK定义的变量 513 21.8.2 Android NDK定义的函数 514 21.8.3 描述模块的变量 515 21.8.4 配置Application.mk文件 516 21.9 小结 516

第22章 测试驱动开发(TDD) 517 22.1 JUnit测试框架 517 22.2 测试Activity 517 22.3 测试Content Provider 521 22.4 测试Service 523 22.5 测试普通类 523 22.6 小结 525

第四部分 综合实例篇 第23章 Android综合案例一——蓝牙聊天 528 23.1 蓝牙聊天主界面 528 23.2 添加选项菜单 530 23.3 搜索和连接蓝牙设备 530 23.4 使设备可被其他蓝牙设备发现 533 23.5 发送和接收聊天信息 533 23.6 小结 537

第24章 Android综合案例二——月球登陆(游戏) 538 24.1 游戏的玩法 538 24.2 实现游戏界面 539 24.3 设置游戏难度 540 24.4 开始游戏 541 24.5 控制飞船喷火 544 24.6 控制飞船改变飞行方向 544 24.7 判断飞船是否成功着陆 545 24.8 小结 546

第25章 Android综合案例三——全键盘输入法(应用) 547 25.1 安装输入法 547 25.2 输入法的初始化工作 548 25.3 响应键盘操作 549 25.4 根据EditText控件的属性显示不同的软键盘 551 25.5 小结 553

第26章 Android综合案例四——贪吃蛇(游戏) 554 26.1 游戏玩法 554 26.2 游戏主界面设计 555 26.3 控制小蛇的移动 557 26.4 小结 560

第27章 Android综合案例五——新浪微博客户端(应用) 561 27.1 新浪微博简介 561 27.1.1 新浪微博客户端 561 27.1.2 新浪微博开放API 563 27.2 使用新浪微博开发API 563 27.3 创建和配置新浪微博客户端工程 564 27.4 登录新浪微博 564 27.5 功能按钮 567 27.6 显示“我的首页”的微博 569 27.7 评论微博 572 27.8 转发微博 573 27.9 写微博 574 27.10 小结 576

第28章 Android综合案例六——笑脸连连看(游戏) 577 28.1 游戏玩法 577 28.2 准备图像素材 578 28.3 实现主界面 578 28.4 随机生成连连看图像 580 28.5 选中两个相同图像后消失 580 28.6 用定时器限制游戏时间 581 28.7 小结 582

亚马逊链接

基本信息

名称: 学通C语言的24堂课
作者信息: 作者: 刘彬彬 [ 中文 pdf ]

简单介绍

《学通C语言的24堂课》:用持续激励培养良好习惯以良好习惯铸就伟大梦想——致亲爱的读者朋友在开始学习《学通C语言的24堂课》的同时,强烈建议读者朋友同时阅读并践行《世界上最伟大的推销员》(奥格曼狄诺著)《学通C语言的24堂课》,该书书名像是写给推销员的书,其实适合所有渴望成功的人们,当然也适合渴望成为优秀程序员的读者朋友。该书是在全世界范围内影响巨大的励志类著作之一,它振奋人心,激励斗志,改变了无数人的命运。成千上万的人们盛赞从该书中得到了神奇的力量,走向了成功之路。该书记载了一则传奇故事。一个名叫海菲的牧童,从他的主人那里幸运地得到十道神秘的羊皮卷,遵循卷中的原则,他执着创业,最终成为了一名伟大的推销员。建立起了一座浩大的商业王国……。怎样使用羊皮卷呢,按照书中所讲,就是每天早上、中午、晚上要分别用心默念或朗诵羊皮卷之一的内容,晚上写下践行记录,该卷内容就会潜移默化影响到自己的行动,通过持续不断的自我激励和实践,30天之后就会形成好良好的习惯,之后再进入下一卷。而成功的秘密就在于养成良好的习惯!良好的习惯可以通过持续不断的激励养成!学习软件开发也是一样,为此,我们借用了该书的方法,在每堂课的最后给出了一个励志故事,希望读者朋友能像上述该书一样,每天早、中、晚上能将该故事默念一遍,并写下践行记录,持续30天使之形成良好习惯,相信这些良好习惯非但助您成功踏上软件开发之路,还能让您受益一生。这也是我们命名为《软件开发羊皮卷》的初衷。375个中小实例训练,550余段源码分析,184个应用模块精解,7大项目案例展示。72集教学视频:72m(308段)多媒体教学视频,听程序员现场讲解、375个中小实例:夯实必备知识。强化基本功训练、550余源码分析:寻找编程感觉。培养编程思想、184个应用模块:激发学习兴趣。突出开发实战、7大项目案例:体验项目开发过程,积累项目开发经验。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
第1部分 基础篇
第1堂课 初识C语言3
视频讲解:45分钟
1.1 C语言发展史4
1.1.1 程序语言简述4
1.1.2 C语言历史4
1.2 C语言的特点5
1.3 一个简单C程序5
1.4 一个完整的C程序7
1.5 C语言程序的格式10
1.6 开发环境11
1.6.1 Turbo C 2.011
1.6.2 Visual C++ 6.014
1.7 照猫画虎——基本功训练19
1.7.1 基本功训练1——使用TC创建C文件19
1.7.2 基本功训练2——使用Visual C++ 6.0创建.c文件20
1.7.3 基本功训练3——打开一个C文件21
1.7.4 基本功训练4——设置工具栏21
1.8 情景应用——拓展与实践22
1.8.1 情景应用1——求和程序22
1.8.2 情景应用2——求10!23
1.8.3 情景应用3——猴子吃桃24
1.8.4 情景应用4——阳阳买苹果25
1.9 自我测试26
1.10 行动指南27
1.11 成功可以复制——迅雷创始人邹胜龙27

第2堂课 掌握C语言数据类型29 视频讲解:56分钟 2.1 C语言的编程规范30 2.1.1 注释的合理使用30 2.1.2 程序中的“{}”要对齐30 2.1.3 合理使用空格使代码更规范31 2.1.4 换行使代码更清晰31 2.2 关键字32 2.3 标识符32 2.4 数据类型33 2.5 常量34 2.5.1 整型常量34 2.5.2 实型常量36 2.5.3 字符型常量36 2.5.4 转义字符39 2.5.5 符号常量40 2.6 变量41 2.6.1 整型变量41 2.6.2 实型变量43 2.6.3 字符型变量45 2.7 照猫画虎——基本功训练46 2.7.1 基本功训练1——定义正确的数据类型求圆周长46 2.7.2 基本功训练2——数值型常量的使用47 2.7.3 基本功训练3——字符变量的使用48 2.7.4 基本功训练4——实型变量的使用48 2.8 情景应用——拓展与实践49 2.8.1 情景应用1——十进制转换为二进制49 2.8.2 情景应用2——利用“#”输出图形51 2.8.3 情景应用3——打印杨辉三角51 2.8.4 情景应用4——利用“*”输出矩形52 2.9 自我测试53 2.10 行动指南54 2.11 成功可以复制——盖茨第二 马克·扎克伯格55

第3堂课 表达式与运算符57 视频讲解:59分钟 3.1 表达式58 3.2 赋值运算符与赋值表达式59 3.2.1 变量赋初值60 3.2.2 自动类型转换61 3.2.3 强制类型转换61 3.3 算术运算符与表达式62 3.3.1 算术运算符62 3.3.2 算术表达式63 3.3.3 优先级与结合性64 3.3.4 自增自减运算符66 3.4 关系运算符与表达式68 3.4.1 关系运算符68 3.4.2 关系表达式68 3.4.3 优先级与结合性69 3.5 逻辑运算符与表达式70 3.5.1 逻辑运算符70 3.5.2 逻辑表达式71 3.5.3 优先级与结合性71 3.6 位逻辑运算符与表达式72 3.6.1 位逻辑运算符72 3.6.2 位逻辑表达式72 3.7 逗号运算符与表达式73 3.8 复合赋值运算符74 3.9 照猫画虎——基本功训练75 3.9.1 基本功训练1——使用基本的算术运算符75 3.9.2 基本功训练2——赋值表达式类型的转换76 3.9.3 基本功训练3——复合赋值运算符的应用77 3.9.4 基本功训练4——逗号运算符的应用77 3.9.5 基本功训练5——关系表达式进行算术运算78 3.10 情景应用——拓展与实践78 3.10.1 情景应用1——求1~10的累加和78 3.10.2 情景应用2——计算学生平均身高79 3.10.3 情景应用3——求一元二次方程 ax2+bx+c=0的根79 3.10.4 情景应用4——求字符串中字符的个数80 3.10.5 情景应用5——计算a+=a*=a/=a-681 3.11 自我测试82 3.12 行动指南83 3.13 成功可以复制——善于抓住时机的人徐少春84

第4堂课 数据输入/输出函数87视频讲解:69分钟 4.1 语句88 4.2 字符数据输入/输出88 4.2.1 字符数据输出88 4.2.2 字符数据输入89 4.3 字符串输入/输出91 4.3.1 字符串输出函数91 4.3.2 字符串输入函数92 4.4 格式输出函数93 4.5 格式输入函数95 4.6 顺序程序设计应用99 4.7 照猫画虎——基本功训练100 4.7.1 基本功训练1——使用字符函数输入/输出字符100 4.7.2 基本功训练2——使用字符输出函数输出“mrsoft”101 4.7.3 基本功训练3——输出相对的最小整数102 4.7.4 基本功训练4——输出乘法口诀表102 4.7.5 基本功训练5——输出两个数的最大 公约数103 4.8 情景应用——拓展与实践104 4.8.1 情景应用1——将输入的小写字符 转换为大写字符104 4.8.2 情景应用2——用“*”号输出图案105 4.8.3 情景应用3——输出3×3的矩阵106 4.8.4 情景应用4——输出一个字符的前驱字符106 4.8.5 情景应用5——根据输入判断能否组成三角形107 4.9 自我测试108 4.10 行动指南110 4.11 成功可以复制——暴雪公司的领航者 迈克·莫汉110

第5堂课 设计选择/分支结构程序113 视频讲解:81分钟 5.1 if语句114 5.2 if语句的基本形式114 5.2.1 if语句形式114 5.2.2 if…else语句形式117 5.2.3 else if语句形式121 5.3 if的嵌套形式124 5.4 条件运算符126 5.5 switch语句127 5.5.1 switch语句的基本形式127 5.5.2 多路开关模式的switch语句131 5.6 if else语句和switch语句的区别132 5.7 选择结构程序应用134 5.8 照猫画虎——基本功训练136 5.8.1 基本功训练1——单条件单分支选择语句136 5.8.2 基本功训练2——单条件双分支选择语句136 5.8.3 基本功训练3——条件运算符的使用137 5.8.4 基本功训练4——计算工人工资138 5.8.5 基本功训练5——判断闰年139 5.9 情景应用——拓展与实践140 5.9.1 情景应用1——从小到大输出3个数140 5.9.2 情景应用2——求学生的最低分和最高分141 5.9.3 情景应用3——模拟自动售货机142 5.9.4 情景应用4——模拟ATM机界面程序143 5.9.5 情景应用5——计算某日是该年的第几天146 5.10 自我测试147 5.11 行动指南150 5.12 成功可以复制——因特网的点火人 马克·安德森151

第6堂课 循环控制153 视频讲解:82分钟 6.1 循环语句154 6.2 while语句154 6.3 do…while语句157 6.4 for语句158 6.4.1 for语句使用158 6.4.2 for循环的变体161 6.4.3 for语句中的逗号应用163 6.5 3种循环语句的比较164 6.6 循环嵌套164 6.6.1 循环嵌套的结构164 6.6.2 循环嵌套实例166 6.7 转移语句166 6.7.1 goto语句167 6.7.2 break语句168 6.7.3 continue语句169 6.8 照猫画虎——基本功训练170 6.8.1 基本功训练1——求某个数的阶乘170 6.8.2 基本功训练2——一元钱的兑换方案171 6.8.3 基本功训练3——特殊等式172 6.8.4 基本功训练4——计算12+22+…+102173 6.8.5 基本功训练5——输出10~100之间的素数173 6.9 情景应用——拓展与实践175 6.9.1 情景应用1——爱因斯坦阶梯问题175 6.9.2 情景应用2——斐波那契数列176 6.9.3 情景应用3——银行存款问题177 6.9.4 情景应用4——计算学生的最高分177 6.9.5 情景应用5——统计不及格的人数178 6.10 自我测试179 6.11 行动指南182 6.12 成功可以复制——微型博客Twitter创始人埃文·威廉姆斯183

第7堂课 数组的应用185 视频讲解:58分钟 7.1 一维数组186 7.1.1 一维数组的定义和引用186 7.1.2 一维数组初始化187 7.1.3 一维数组应用189 7.2 二维数组190 7.2.1 二维数组的定义和引用190 7.2.2 二维数组初始化191 7.2.3 二维数组应用192 7.3 多维数组193 7.4 数组的排序算法194 7.4.1 选择法排序194 7.4.2 冒泡法排序196 7.4.3 交换法排序197 7.4.4 插入法排序199 7.4.5 折半法排序201 7.4.6 排序算法的比较204 7.5 照猫画虎——基本功训练205 7.5.1 基本功训练1——逆序存放数据205 7.5.2 基本功训练2——查找数组中的最值206 7.5.3 基本功训练3——判断一个数是否存在数组中207 7.5.4 基本功训练4——相邻元素之和208 7.5.5 基本功训练5——求二维数组对角线之和208 7.6 情景应用——拓展与实践209 7.6.1 情景应用1——选票统计209 7.6.2 情景应用2——模拟比赛打分211 7.6.3 情景应用3——统计学生成绩212 7.6.4 情景应用4——矩阵的转置213 7.6.5 情景应用5——设计魔方阵215 7.7 自我测试216 7.8 行动指南218 7.9 成功可以复制——射击游戏之父John Carmack218

第8堂课 字符数组221 视频讲解:60分钟 8.1 字符数组的应用222 8.1.1 字符数组定义和引用222 8.1.2 字符数组初始化222 8.1.3 字符数组的结束标志224 8.1.4 字符数组的输入/输出224 8.1.5 字符数组应用226 8.2 字符串处理函数227 8.2.1 字符串复制227 8.2.2 字符串连接228 8.2.3 字符串比较229 8.2.4 字符串大小写转换230 8.2.5 获得字符串长度232 8.3 照猫画虎——基本功训练233 8.3.1 基本功训练1——不使用strcpy函数实现字符串复制功能233 8.3.2 基本功训练2——用字符数组存储学生姓名并输出234 8.3.3 基本功训练3——字符升序排列234 8.3.4 基本功训练4——在指定位置插入字符236 8.3.5 基本功训练5——删除字符串中的连续字符237 8.4 情景应用——拓展与实践238 8.4.1 情景应用1——统计各种字符个数238 8.4.2 情景应用2——字符串倒置239 8.4.3 情景应用3——字符串替换240 8.4.4 情景应用4——回文字符串241 8.4.5 情景应用5——字符串加密和解密242 8.5 自我测试244 8.6 行动指南245 8.7 成功可以复制——图文世界的缔造者约翰·沃洛克246

第2部分 提高篇 第9堂课 函数的应用251 视频讲解:98分钟 9.1 函数概述252 9.2 函数的定义253 9.2.1 函数定义的形式254 9.2.2 定义与声明255 9.3 返回语句257 9.3.1 从函数返回257 9.3.2 返回值258 9.4 函数参数259 9.4.1 形式参数与实际参数260 9.4.2 数组作函数参数261 9.4.3 main的参数266 9.5 函数的调用267 9.5.1 函数调用方式267 9.5.2 嵌套调用269 9.5.3 递归调用271 9.6 内部函数和外部函数273 9.6.1 内部函数274 9.6.2 外部函数275 9.7 局部变量和全局变量276 9.7.1 局部变量276 9.7.2 全局变量278 9.8 函数应用280 9.9 照猫画虎——基本功训练285 9.9.1 基本功训练1——设计函数输出两个数中的最大值285 9.9.2 基本功训练2——设计函数计算学生的平均成绩286 9.9.3 基本功训练3——判断素数287 9.9.4 基本功训练4——求数组元素中的最小值287 9.9.5 基本功训练5——打印1到5的阶乘288 9.10 情景应用——拓展与实践289 9.10.1 情景应用1——递归解决年龄问题289 9.10.2 情景应用2——百钱百鸡问题290 9.10.3 情景应用3——求最大公约数和最小公倍数292 9.10.4 情景应用4——求直角三角形斜边293 9.10.5 情景应用5——小数分离294 9.11 自我测试294 9.12 行动指南296 9.13 成功可以复制——征途巨人史玉柱297

第10堂课 变量的存储类别299 视频讲解:42分钟 10.1 了解变量的存储类型300 10.2 使用auto关键字声明自动变量300 10.3 使用static关键字声明静态变量301 10.4 使用register关键字声明寄存器变量303 10.5 使用extern关键字声明外部变量304 10.5.1 声明在一个文件中使用的外部变量304 10.5.2 声明在多个文件中使用的外部变量305 10.6 使用static关键字声明静态外部变量306 10.7 照猫画虎——基本功训练307 10.7.1 基本功训练1——声明自动变量307 10.7.2 基本功训练2——比较两个数的大小308 10.7.3 基本功训练3——求两个数的和309 10.7.4 基本功训练4——计算用户输入整数的乘积309 10.7.5 基本功训练5——使用register定义局部变量310 10.8 情景应用——拓展与实践311 10.8.1 情景应用1——婚礼上的谎言311 10.8.2 情景应用2——求新同学的年龄312 10.8.3 情景应用3——捕鱼和分鱼313 10.8.4 情景应用4——求邮票总数314 10.8.5 情景应用5——巧分苹果315 10.9 自我测试316 10.10 行动指南318 10.11 成功可以复制——缔造华人的硅谷传奇杨致远319

第11堂课 C语言中的指针321 视频讲解:107分钟 11.1 指针相关概念322 11.1.1 地址与指针322 11.1.2 变量与指针323 11.1.3 指针变量323 11.1.4 指针自加自减运算326 11.2 数组与指针327 11.2.1 一维数组与指针328 11.2.2 二维数组与指针331 11.2.3 字符串与指针333 11.2.4 字符串数组334 11.3 指向指针的指针336 11.4 指针变量作函数参数338 11.5 返回指针值的函数343 11.6 指针数组作main函数的参数345 11.7 照猫画虎——基本功训练346 11.7.1 基本功训练1——利用指针查找数列中最大值和最小值346 11.7.2 基本功训练2——利用指针实现字符串复制347 11.7.3 基本功训练3——实现数组元素值逆序存放348 11.7.4 基本功训练4——使用指针连接两个字符串349 11.7.5 基本功训练5——利用指针输出数组元素350 11.8 情景应用——拓展与实践351 11.8.1 情景应用1——查找成绩不及格的学生351 11.8.2 情景应用2——使用指针实现冒泡排序352 11.8.3 情景应用3——输入月份号输出英文月份名353 11.8.4 情景应用4——使用指针插入元素354 11.8.5 情景应用5——使用指针交换两个数组中的最大值355 11.9 自我测试357 11.10 行动指南359 11.11 成功可以复制——杀毒王王江民360

第12堂课 结构体的使用363 视频讲解:62分钟 12.1 结构体364 12.1.1 结构体类型的概念364 12.1.2 结构体变量的定义365 12.1.3 结构体变量的引用366 12.1.4 结构体类型的初始化368 12.2 结构体数组370 12.2.1 定义结构体数组370 12.2.2 初始化结构体数组371 12.3 结构体指针373 12.3.1 指向结构体变量的指针373 12.3.2 指向结构体数组的指针376 12.3.3 结构体作函数参数377 12.4 包含结构的结构380 12.5 照猫画虎——基本功训练381 12.5.1 基本功训练1——结构体变量的初始化381 12.5.2 基本功训练2——使用结构体存放学生信息382 12.5.3 基本功训练3——整数排序383 12.5.4 基本功训练4——指向数组元素的结构指针运算384 12.5.5 基本功训练5——计算学生的平均成绩385 12.6 情景应用——拓展与实践386 12.6.1 情景应用1——找出最高分386 12.6.2 情景应用2——候选人选票程序387 12.6.3 情景应用3——求平面上两点的距离388 12.6.4 情景应用4——设计通讯录389 12.6.5 情景应用5——输出火车票价390 12.7 自我测试392 12.8 行动指南394 12.9 成功可以复制——中国第一程序员求伯君395

第13堂课 共用体的综合应用397视频讲解:24分钟 13.1 共用体398 13.1.1 共用体的概念398 13.1.2 共用体变量的引用398 13.1.3 共用体变量的初始化399 13.1.4 共用体类型的数据特点400 13.2 枚举类型400 13.3 照猫画虎——基本功训练401 13.3.1 基本功训练1——共用体变量的应用401 13.3.2 基本功训练2——共用体处理任意类型数据402 13.3.3 基本功训练3——取出整型数据的高字节数据403 13.4 情景应用——拓展与实践404 13.4.1 情景应用1——使用共用体存放学生和老师信息404 13.4.2 情景应用2——输出今天星期几405 13.4.3 情景应用3——制作花束406 13.5 自我测试408 13.6 行动指南409 13.7 成功可以复制——80后新贵、泡泡网CEO李想409

第14堂课 使用预处理命令411 视频讲解:62分钟 14.1 宏定义412 14.1.1 不带参数的宏定义412 14.1.2 带参数的宏定义413 14.2 #include指令414 14.3 条件编译416 14.3.1 #if命令416 14.3.2 #ifdef及#ifndef命令418 14.3.3 #undef命令419 14.3.4 #line命令419 14.3.5 #pragma命令420 14.4 照猫画虎——基本功训练420 14.4.1 基本功训练1——不带参数的宏定义求平行四边形面积420 14.4.2 基本功训练2——定义带参数的宏实现求两个整数的乘积421 14.4.3 基本功训练3——编写头文件包含圆面积的计算公式422 14.4.4 基本功训练4——使用条件编译将字符转换为大写423 14.4.5 基本功训练5——使用宏定义实现数组值的互换424 14.5 情景应用——拓展与实践425 14.5.1 情景应用1——使用带参数的宏求圆面积425 14.5.2 情景应用2——利用宏定义求偶数和426 14.5.3 情景应用3——从3个数中找出最小数427 14.5.4 情景应用4——利用文件包含设计输出模式428 14.5.5 情景应用5——使用条件编译隐藏密码428 14.6 自我测试429 14.7 行动指南431 14.8 成功可以复制——使计算机成为 生活的必需品比尔·盖茨432

第3部分 高级篇 第15堂课 存储管理435 视频讲解:33分钟 15.1 内存组织方式436 15.1.1 内存组织方式436 15.1.2 堆管理436 15.2 动态管理437 15.2.1 malloc函数437 15.2.2 calloc函数438 15.2.3 realloc函数439 15.2.4 free函数439 15.3 内存丢失440 15.4 照猫画虎——基本功训练441 15.4.1 基本功训练1——sizeof关键字的应用441 15.4.2 基本功训练2——为具有3个数组元素的数组分配内存442 15.4.3 基本功训练3——为二维数组动态分配内存442 15.5 情景应用——拓展与实践444 15.5.1 情景应用1——使用malloc()函数分配内存444 15.5.2 情景应用2——调用calloc()函数动态分配内存444 15.5.3 情景应用3——商品信息的动态存放445 15.6 自我测试446 15.7 行动指南447 15.8 成功可以复制——知识改变命运、科技改变生活李彦宏448

第16堂课 链表在C语言中的应用451视频讲解:76分钟 16.1 链表452 16.1.1 链表概述452 16.1.2 静态链表453 16.1.3 处理动态链表所需的函数454 16.2 链表相关操作454 16.2.1 创建动态链表454 16.2.2 输出链表456 16.2.3 链表的插入操作458 16.2.4 链表的删除操作459 16.3 链表的表现形式463 16.3.1 单向链表463 16.3.2 循环链表464 16.3.3 双向链表464 16.4 照猫画虎——基本功训练465 16.4.1 基本功训练1——创建单向链表465 16.4.2 基本功训练2——向单向链表中插入元素467 16.4.3 基本功训练3——删除结点元素469 16.4.4 基本功训练4——创建双向链表471 16.4.5 基本功训练5——创建循环链表474 16.5 情景应用——拓展与实践475 16.5.1 情景应用1——单向链表逆置475 16.5.2 情景应用2——双向链表逆序输出477 16.5.3 情景应用3——连接两个链表479 16.5.4 情景应用4——使用链表实现约瑟夫环480 16.5.5 情景应用5——查找两个链表中的相同元素482 16.6 自我测试484 16.7 行动指南486 16.8 成功可以复制——中国通信设备行业的领跑者任正非486

第17堂课 栈和队列489 视频讲解:73分钟 17.1 栈的定义和几种基本操作490 17.1.1 栈的定义490 17.1.2 栈常见的几种基本操作491 17.2 栈的存储和实现492 17.2.1 顺序栈492 17.2.2 链栈494 17.3 队列的定义和基本操作497 17.3.1 队列的定义497 17.3.2 队列常见的几种基本操作497 17.4 队列的存储及运算497 17.4.1 顺序队列497 17.4.2 链队列500 17.4.3 循环队列501 17.5 照猫画虎——基本功训练501 17.5.1 基本功训练1——应用栈实现进制转换501 17.5.2 基本功训练2——括号匹配检测504 17.5.3 基本功训练3——利用栈实现递归计算多项式507 17.5.4 基本功训练4——循环队列的基本操作508 17.6 情景应用——拓展与实践511 17.6.1 情景应用1——汉诺塔问题511 17.6.2 情景应用2——机票预售系统513 17.6.3 情景应用3——链队列的使用515 17.7 自我测试519 17.8 行动指南520 17.9 成功可以复制——软件业的华人教父王嘉廉521

第18堂课 C语言中的位运算523 视频讲解:62分钟 18.1 位与字节524 18.2 位运算操作符524 18.2.1 与运算符524 18.2.2 或运算符525 18.2.3 取反运算符527 18.2.4 异或运算符528 18.2.5 左移运算符529 18.2.6 右移运算符530 18.3 循环移位532 18.4 位段533 18.4.1 位段的概念与定义533 18.4.2 位段相关说明534 18.5 照猫画虎——基本功训练535 18.5.1 基本功训练1——输入两个整数实现按位与和按位或535 18.5.2 基本功训练2——使二进制数特定位翻转536 18.5.3 基本功训练3——整数与0异或537 18.5.4 基本功训练4——将输入的数左移两位并输出538 18.5.5 基本功训练5——编程实现循环右移538 18.6 情景应用——拓展与实践539 18.6.1 情景应用1——交换两个值不用临时变量539 18.6.2 情景应用2——取一个整数的后4位540 18.6.3 情景应用3——编写循环移位函数541 18.6.4 情景应用4——取出给定16位二进制数的奇数位541 18.6.5 情景应用5——求一个数的补码542 18.7 自我测试543 18.8 行动指南544 18.9 成功可以复制——创造互联网搜索时代谢尔盖·布林545

第19堂课 文件操作技术547 视频讲解:87分钟 19.1 文件概述548 19.2 文件基本操作548 19.2.1 文件指针548 19.2.2 文件的打开549 19.2.3 文件的关闭549 19.3 文件的读写550 19.3.1 fputc函数550 19.3.2 fgetc函数551 19.3.3 fputs函数551 19.3.4 fgets函数552 19.3.5 fprintf函数553 19.3.6 fscanf函数554 19.3.7 fread函数和fwrite函数555 19.4 文件的定位557 19.4.1 fseek函数557 19.4.2 rewind函数558 19.4.3 ftell函数559 19.5 照猫画虎——基本功训练561 19.5.1 基本功训练1——关闭打开的所有文件561 19.5.2 基本功训练2——读取指定文件的内容563 19.5.3 基本功训练3——同时显示两个文件的内容564 19.5.4 基本功训练4——随机读写文件565 19.5.5 基本功训练5——文件的错误处理567 19.6 情景应用——拓展与实践569 19.6.1 情景应用1——创建文件569 19.6.2 情景应用2——文件的复制570 19.6.3 情景应用3——删除文件572 19.6.4 情景应用4——重命名文件573 19.6.5 情景应用5——文件加密575 19.7 自我测试577 19.8 行动指南579 19.9 成功可以复制——IT风云人物鲍岳桥579

第20堂课 图形图像处理581 视频讲解:129分钟 20.1 字符屏幕582 20.1.1 定义文本窗口582 20.1.2 颜色设置582 20.1.3 文本的输入和输出583 20.1.4 屏幕操作函数584 20.2 图形显示586 20.2.1 图形模式初始化586 20.2.2 屏幕颜色设置588 20.2.3 基本图形函数590 20.2.4 封闭图形的填充597 20.3 图形屏幕599 20.4 图形模式下文本输出600 20.4.1 文本输出函数600 20.4.2 文本属性设置601 20.5 照猫画虎——基本功训练603 20.5.1 基本功训练1——闪烁的文字603 20.5.2 基本功训练2——实现背景颜色切换604 20.5.3 基本功训练3——绘制圆形605 20.5.4 基本功训练4——在屏幕中绘制两个相同的小球605 20.5.5 基本功训练5——绘制五角星607 20.6 情景应用——拓展与实践609 20.6.1 情景应用1——绘制折线图609 20.6.2 情景应用2——输出饼状图611 20.6.3 情景应用3——画条形图612 20.6.4 情景应用4——画玫瑰花615 20.6.5 情景应用5——菜单界面设计619 20.7 自我测试625 20.8 行动指南627 20.9 成功可以复制——IT大王王志东627

第4部分 实战篇 第21堂课 猜数字游戏631 视频讲解:23分钟 21.1 概述632 21.2 需求分析632 21.3 系统设计632 21.3.1 设计目标632 21.3.2 开发及运行环境632 21.4 程序预览632 21.5 设计思路634 21.6 文件引用634 21.7 主要功能实现634 21.7.1 主函数634 21.7.2 猜数字635 21.7.3 光标定位637

第22堂课 五子棋游戏639 视频讲解:27分钟 22.1 概述640 22.2 需求分析640 22.3 系统设计640 22.3.1 设计目标640 22.3.2 开发及运行环境640 22.4 程序预览640 22.5 graphics.h文件641 22.6 设计思路644 22.7 预处理644 22.7.1 文件引用644 22.7.2 宏定义645 22.8 声明变量645 22.9 函数声明645 22.10 主要功能实现645 22.10.1 主函数645 22.10.2 开始游戏647 22.10.3 绘制棋盘647 22.10.4 绘制棋子648 22.10.5 清除棋子648 22.10.6 游戏过程648 22.10.7 判断胜负653

第23堂课 学生成绩管理系统657 视频讲解:40分钟 23.1 需求分析658 23.2 系统设计658 23.3 功能设计658 23.3.1 功能选择界面659 23.3.2 录入学生成绩信息660 23.3.3 查询学生成绩信息662 23.3.4 删除学生成绩信息663 23.3.5 修改学生成绩信息664 23.3.6 插入学生成绩信息666 23.3.7 统计学生人数668

第24堂课 图书管理系统(MySQL)669 视频讲解:32分钟 24.1 概述670 24.1.1 需求分析670 24.1.2 开发工具选择670 24.2 系统设计670 24.2.1 系统目标670 24.2.2 系统功能结构670 24.2.3 系统预览670 24.2.4 开发及运行环境672 24.3 数据库设计673 24.3.1 安装MySQL数据库673 24.3.2 启动MySQL数据库676 24.3.3 创建数据库677 24.3.4 数据表结构678 24.4 C语言开发数据库程序的流程678 24.5 C语言操作MySQL数据库680 24.5.1 MySQL常用数据库操作函数680 24.5.2 连接MySQL数据682 24.5.3 查询图书表记录683 24.5.4 插入图书表记录685 24.5.5 修改图书表记录686 24.5.6 删除图书表记录687 24.6 文件引用687 24.7 变量和函数定义688 24.8 主要功能模块设计688 24.8.1 显示主菜单信息688 24.8.2 显示所有图书信息690 24.8.3 添加图书信息692 24.8.4 修改图书信息698 24.8.5 删除图书信息704 24.8.6 查询图书信息710 24.9 程序调试及错误处理712 24.9.1 解决创建数据表为一个文件的问题712 24.9.2 在创建数据表时,最后一句结尾没有标点713 24.9.3 无法启动MySQL服务714

亚马逊链接