logo资料库

零基础入门C语言-王桂林 -v2-.pdf

第1页 / 共340页
第2页 / 共340页
第3页 / 共340页
第4页 / 共340页
第5页 / 共340页
第6页 / 共340页
第7页 / 共340页
第8页 / 共340页
资料共340页,剩余部分请下载后查看
1.Hello World
1.1.源程序
1.1.1.C语言版
1.1.2.C++版
1.1.3.hello word collection
1.2.注释
1.3.从源程序到可执行程序
1.3.1.集成开发环境:
1.3.2.手动编译:
1.4.致敬大师
2.Linux 常用基础命令
2.1.版本选择
2.1.1.内核版本
2.1.2.发行版本
2.2.目录结构
2.2.1.系统目录
2.2.2.分区与目录
2.2.3.路径
2.3.常用命令
2.3.1.命令格式
2.3.2.目录切换
2.3.3.文件操作
2.3.4.用户管理
2.3.5.解压缩命令
2.3.6.网络命令
2.3.7.Ubuntu下软件安装
2.3.8.其它命令参考
2.4.vim文本编辑
2.4.1.vim编辑器中有三种状态模式
2.4.2.vim编辑器的启动与退出
2.4.3.文件操作
2.4.4.光标移动操作
2.4.5.编辑操作
2.4.6.查找与替换操作
2.4.7.学习工具vimtutor
2.4.8.vim 最简易配置
2.4.9.vim插件
2.4.9.1.下载
2.4.9.2.安装
2.4.10.vim 与HHKB
2.5.ftp服务
2.5.1.安装
2.5.2.服务端配置
2.5.3.客户端访问
3.C语言与自然语言
3.1.语法规则
3.2.程序与流程
3.2.1.程序
3.2.2.流程和流程图
3.2.2.1.流程即算法
3.2.2.2.流程图
3.2.2.3.请用流程图 将a,b,c 中最大值放到max中并输出。
3.2.3.常用制图工具
4.常/变量与数据类型(DataType)
4.1.C语言中的关键字
4.2.变量(Variable)
4.2.1.变量的定义
4.2.2.变量的命名规则:
4.2.3.交换两个变量的内容
4.2.4.驼峰命名法
4.3.内存模型
4.3.1.物理基础
4.3.2.CPU读写内存
4.3.2.1.地址总线
4.3.2.2.数据总线
4.3.2.3.控制总线
4.3.3.读写流程:
4.3.3.1.读取流程(从3单元读取数据)
4.3.3.2.写入流程:(将26写入单元3)
4.3.4.代码演示
4.3.4.1.c代码
4.3.4.2.汇编代码
4.4.计算机的基石补码
4.4.1.计算机编码基础
4.4.2.补码的编码规则
4.4.2.1.模的概念
4.4.2.2.补码运算
4.4.3.小结
4.5.数据类型
4.5.1.类型总揽
4.5.2.基本类型之数值类型
4.5.2.1.如何求类型的大小
4.5.2.2.整型数表示范围
4.5.2.3.浮点数的表示方法和范围
4.5.3.基本类型之字符类型
4.5.3.1.引入
4.5.3.2.表示形式
4.5.3.3.ASCII编码
4.5.3.4.自实现打印
4.5.3.5.转义字符
4.5.3.6.注意事项
4.6.常量(Constant)
4.6.1.常量类型
4.6.1.1.整型常量
4.6.1.2.实型常量
4.6.1.3.字符常量
4.6.1.4.字符串常量
4.6.2.常量的大小
4.7.格式输入与输出
4.7.1.printf
4.7.1.1.基本使用介绍
4.7.1.2.格式串
4.7.2.scanf
4.7.2.1.基本使用介绍
4.7.2.2.格式串
4.7.3.putchar && getchar
4.7.4.输入输出缓冲
4.8.类型转化(Type Cast)
4.8.1.隐式转化
4.8.1.1.算术转化
4.8.1.2.赋值转化
4.8.1.3.隐式转化规则
4.8.2.强制转化
4.9.练习
4.9.1.浮点数跟0值比较
4.9.2.printf返回值有意义吗?
5.运算符与表达式(Operator&&Express)
5.1.运符符的优先级/结合性/分类
5.2.常见运符算符及构成的表达式
5.2.1.赋值运算符与赋值表达式
5.2.1.1.列表
5.2.1.2.解析
5.2.1.3.实战
5.2.2.算术运算符与算术表达式
5.2.2.1.列表
5.2.2.2.解析
5.2.2.3.实战
5.2.2.4.常见应用类型
5.2.3.关系运算符与关系表达式
5.2.3.1.列表
5.2.3.2.解析
5.2.3.3.实战
5.2.3.4.常见应用类型
5.2.4.逻辑运算符与逻辑表达式
5.2.4.1.列表
5.2.4.2.解析
5.2.4.3.实战
5.2.5.条件运算符与条件表达式
5.2.5.1.列表
5.2.5.2.解析
5.2.5.3.实战
5.2.5.4.求证运算顺序
5.2.6.逗号运算符与逗号表达式
5.2.6.1.列表
5.2.6.2.解析
5.2.6.3.实战
5.2.7.sizeof运算符及其表达式
5.2.7.1.列表
5.2.7.2.解析
5.2.7.3.实战
5.2.7.4.我本是女娇娥 又不是男儿郎
5.2.8.小结
5.3.运算符综合练习
5.3.1.if(x==y) 与 if(x=y) 之间的区别。
5.3.2.表达式3==3==3的值是多少?
5.3.3.表达式100<=a<=300,能表达[100,300]这样的区间吗?
5.3.4.如何判断,我们输入的字符在[a,z]之间。
5.3.5.求[100,999]内的水仙花数
5.3.6.判断输入的年份,是否为润年。
5.3.7.判断数字是否是回文数。
6.程序流程设计(Flow of Control)
6.1.选择
6.1.1.If else
6.1.1.1.if 结构及流程图
6.1.1.2.if else 结构及流程图
6.1.1.3.if else if 结构流程及演变
6.1.1.4.注意事项
6.1.2.switch
6.1.2.1.switch的意义
6.1.2.2.switch结构
6.1.2.3.注意事项目
6.1.2.4.实战项目
6.1.3.小结
6.1.4.练习判断按键
6.2.循环
6.2.1.循环三要素
6.2.1.1.死循环
6.2.1.2.可控循环
6.2.1.3.可控循环的三要素
6.2.2.while"当"型循环
6.2.2.1.语法结构及流程
6.2.2.2.解析
6.2.2.3.实战
6.2.3.do while"直到"型循环
6.2.3.1.语法及流程
6.2.3.2.解析
6.2.3.3.实战
6.2.3.4. while/do while 综合案例
6.2.3.5.do while 的争议
6.2.4.for"列表"型循环
6.2.4.1.语法结构及流程
6.2.4.2.解析
6.2.4.3.实战
6.2.4.4.这还是for吗?for(;;)
6.2.4.5.for与逗号表达式
6.2.5.循环的嵌套
6.2.5.1.嵌套的语法格式
6.2.6.循环建议
6.2.6.1.先外后内的循环嵌套写法
6.2.6.2.半开半闭区间写法
6.2.6.3.嵌套的优化
6.2.7.循环小结
6.2.8.练习
6.2.8.1.打印小九九
6.2.8.2.分别用while 和do while 实现将输入的整数翻转输出。
6.2.8.3.百钱买百鸡的问题
6.2.8.4.女朋友追到手了没有
6.3.跳转
6.3.1.break
6.3.1.1.解析
6.3.1.2.语法与流程
6.3.1.3.实战
6.3.2.continue
6.3.2.1.解析
6.3.2.2.语法和流程
6.3.2.3.实战
6.3.3.return
6.3.4.goto
6.3.5.练习
6.3.5.1.测试break能跳出几层结构
6.4.练习
6.4.1.打印如下图形
7.数组(Array)
7.1.一维数组
7.1.1.逻辑与声明
7.1.2.初始化与访问
7.1.2.1.初始化
7.1.2.2.访问与一重循环
7.1.3.一维数组的存储
7.1.3.1.逻辑与存储
7.1.3.2.实例验证
7.1.4.数组三要素
7.1.4.1.三要素图示
7.1.4.2.成员访问
7.1.5.关于变长数组
7.1.6.实战应用(一维数据形态)
7.1.6.1.求一个数组的数据和与平均值
7.1.6.2.求一个数组中最大与最小值
7.1.6.3.对数组元素进行排序
7.1.6.4.线性查找
7.1.6.5.折半查找
7.1.7.作业
7.1.7.1.求一个数组中第二大的数(用一重循环)
7.2.二维数组
7.2.1.声明/定义
7.2.2.初始化
7.2.3.二维数组的逻辑/存储
7.2.3.1.逻辑
7.2.3.2.存储
7.2.3.3.数组三要素
7.2.3.4.数组中数组成员的访问
7.2.4.实战应用(二维数据形态)
7.2.4.1.主对角线与次对角线输出
7.2.4.2.逆置一个二维字符数组
7.2.4.3.天生棋局
7.2.4.4.有序数组归并
7.3.数组名的二义性
7.3.1.一维数组名
7.3.2.二维数组名
7.4.练习
7.4.1.写出冒泡排序的逻辑,并实现冒泡排序。
7.4.2.无序数组查找,返回下标(线性查找)
7.4.3.有序数组查找(折半查找)
7.4.4.求出矩阵两条对角线上的元素之和
7.4.5.有序数组去重,并返回去重后数组元素新个数。
7.4.6.二维数组按列移位
7.4.7.五子棋判输赢
7.4.7.1.图示
7.4.7.2.代码提示
8.指针(Pointer)
8.1.认识内存
8.1.1.线性的内存
8.1.2.变量的地址与大小
8.1.2.1.变量的地址
8.1.2.2.地址的大小
8.1.3.间接访问内存
8.2.指针常量
8.2.1.指针是有类型地址常量
8.3.指针变量
8.3.1.定义
8.3.2.解析
8.3.3.指针变量大小
8.3.4.初始化及间接访问
8.3.5.指向/被指向/更改指向
8.3.6.NULL(色即空)
8.3.6.1.野指针
8.3.6.2.NULL指针(零值无类型指针)
8.3.6.3.void 本质
8.3.7.课常实战
8.3.7.1.打印变量和变量的地址:
8.3.7.2.如下声明两个变量分别表示什么
8.3.7.3.区别指针
8.4.指针运算
8.4.1.赋值运算
8.4.2.算术运算
8.4.3.关系运算
8.4.4.小结
8.5.数组遇上指针
8.5.1.一维数组的访问方式
8.5.1.1.传统方式(下标/偏移法)
8.5.1.2.数组名是常量指针
8.5.1.3.一维数组名跟一级指针的关系
8.5.1.4.指针访问方式
8.5.1.5.小结
8.5.2.二维数组的访问方式
8.5.2.1.下标法
8.5.2.2.本质偏移法
8.5.2.3.小结
8.5.2.4.推论
8.5.2.5.指针法
8.6.练习
8.6.1.用指针法逆序打印一个数组。
8.6.2.往指定内存写入数据
8.6.3.判判是否是回文串
9.函数(Function)
9.1.c标准库及库函数
9.1.1.库存在的意义
9.1.2.如何使用库函数
9.1.3.库函数使用示例
9.1.3.1.随机函数
9.1.3.2.正弦函数
9.1.3.3.获取时间函数
9.1.4.常用库函数
9.1.4.1.列表
9.1.4.2.实例
9.2.自定义函数
9.2.1.语法格式
9.2.2.调用方法
9.2.3.前向声明
9.2.4.函数返回值
9.2.5.实参与形参
9.2.5.1.形参
9.2.5.2.实参
9.3.传值与传址
9.3.1.传值与传址的比较
9.3.1.1.mySwap之传值
9.3.1.2.mySwap之传址
9.3.2.图解传值与传址
9.3.3.如何来传递一个一维数组
9.3.4.如何来传递一个二维数组
9.3.5.小结
9.4.函数调用
9.4.1.普通调用
9.4.2.递归调用
9.5.递归(Recursive)详解
9.5.1.递归定义
9.5.1.1.推算年龄
9.5.1.2.猴子吃桃子的问题
9.5.2.递归小结
9.5.2.1.公式结构
9.5.2.2.书写结构
9.5.2.3.书写结构(有返回)
9.5.2.4.递归中数据的处理
9.5.3.递归与循环论述
9.5.3.1.递推年龄,递归改迭代
9.5.3.2.猴子吃桃,递归改迭代
9.5.4.递归练习
9.5.4.1.下面的代码输出啥
9.5.4.2.阶乘(factorial)
9.6.练习
9.6.1.如何产生[m,n]以内的随机数。
9.6.2.产生30个不重复的随机数
9.6.3.请用函数封装基于数组的冒泡排序,选择排序。
9.6.4.用函数的思想来支解选择法排序
9.6.5.请用函数封装基于数组的二分查找。
9.6.6.求中位数
10.变量作用域/生命周期/修饰符
10.1.作用域(Scope)
10.1.1.作用域
10.1.1.1.划分
10.1.1.2.局部变量(local variable)
10.1.1.3.全局变量(global variable)
10.1.1.4.图示作用域
10.1.2.作用域叠加
10.1.3.全局命名污染
10.2.生命周期(Duration)
10.2.1.局部变量
10.2.2.全局变量
10.3.修饰符(Storage Description )
10.3.1.auto(大将军)
10.3.2.register(小太监)
10.3.3.extern(通关文牒)
10.3.3.1.跨文件:
10.3.3.2.同文件:
10.3.3.3.引申:变量的声明与定义
10.3.4.static(柱国老臣|限离出境)
10.3.4.1.修饰局部变量
10.3.4.2.静态局部变量应用
10.3.4.3.修饰全局变量
10.3.4.4.修饰函数
10.4.小结
11.字符串(String)
11.1.引入
11.2.字符串常量
11.2.1.字符串大小
11.2.2.字符串存储
11.2.3.C语言是如何处理字符串常量
11.3.字符串与字符数组
11.3.1.常量字符串不可更改
11.3.2.字符串与字符数组比较
11.3.3.字符数组存储字符串
11.3.3.1.等价条件
11.3.3.2.不等价条件
11.3.4.小结
11.4.字符串的输入与输出
11.4.1.输出
11.4.1.1.printf
11.4.1.2.puts
11.4.2.输入
11.4.2.1.scanf
11.4.2.2.gets
11.5.字符串操作函数
11.5.1.字符数组原生操作
11.5.1.1.求字符串长度
11.5.1.2.链接两个字符串
11.5.2.库函数操作
11.5.2.1.strlen
11.5.2.2.strcat (concatenate)
11.5.2.3.strcpy
11.5.2.4.strcmp
11.5.2.5.练习
11.6.字符串操作函数自实现
11.6.1.myStrlen
11.6.2.myStrcpy
11.7.多文件编程
11.7.1.函数声明(.h)
11.7.2.函数实现(.c)
11.7.3.头文件包含#include
11.8.指针数组
11.8.1.定义
11.8.2.应用
11.8.2.1.输出
11.8.2.2.排序
11.8.2.3.argc/argv
11.8.3.思考
11.9.你所追过的那些"零"
11.9.1.零所代表的意义
11.9.2.实例分析
11.10.作业
11.10.1.自实现 myStrcat
11.10.2.自实现myStrcmp
11.10.2.1.基础版本
11.10.2.2.优化版本
11.10.3.以下代码能打印什么?
12.内存管理(Memory)
12.1.进程空间
12.1.1.源程序/程序/进程
12.1.2.进程空间图示
12.2.栈内存(Stack)
12.2.1.栈存储的特点
12.2.2.栈大小
12.2.3.常见栈溢出案例
12.3.堆内存(Heap)
12.3.1.堆存储的特点
12.3.2.堆大小
12.3.3.堆内存的申请与释放
12.3.3.1.malloc
12.3.3.2.calloc
12.3.3.3.realloc
12.3.3.4.free
12.3.4.应用模型
12.3.4.1.动态数组
12.3.5.常见错误案例剖析
12.3.5.1.置空与判空
12.3.5.2.重复申请
12.3.5.3.谁申请谁释放模型(并非绝对)
12.3.5.4.其它常见错误
12.3.6.VLD工具使用
12.3.6.1.下载
12.3.6.2.安装
12.3.6.3.使用
12.4.开放的地址空间
12.5.堆与栈空间的返回
12.5.1.栈空间不可以返回
12.5.2.堆空间可以返回
13.结构体(Struct)
13.1.引例
13.2.为什么要引入结构体
13.2.1.开放类型定义
13.2.2.从单变量->数组->结构体
13.3.结构体类型定义
13.3.1.无名构造类型
13.3.2.有名构造类型
13.3.3.别名构造体类型
13.3.4.小结
13.4.结构体变量初始化及成员访问
13.4.1.初始化及访问
13.4.1.1.点成员运算符(.)
13.4.1.2.指向成员运算符( -> (*). )
13.4.1.3.其它初始化方法(重要)
13.4.2.成员运算符本质
13.4.3.赋值
13.5.结构体类型作参数和返回值
13.5.1.结构体变量作参数和返回值
13.5.2.结构体指针作参数
13.5.3.获取当前时间函数的使用
13.6.结构体数组
13.6.1.定义及初始化
13.6.2.内存存储形式
13.6.3.实战之选举
13.7.结构体嵌套
13.7.1.结构体中可以嵌套结构体
13.7.2.嵌套结构体变量定义和初始化
13.8.结构体类型的大小
13.8.1.结构体成员内存分布
13.8.2.内存对齐
13.8.2.1.什么是不对齐
13.8.2.2.对齐规则
13.8.3.结构体中嵌套构造类型成员的对齐
13.8.3.1.数组
13.8.3.2.结构体成员
13.9.结构体使用注意事项
13.9.1.向结构体内未初始化的指针拷贝
13.9.2.未释放结构体内指针所指向的空间
13.9.3.深拷贝与浅拷贝
13.10.课堂实战
13.10.1.栈的自实现
13.10.1.1.栈的特点
13.10.1.2.代码实现
13.11.typedef 类型重命名
13.11.1.typedef 作用
13.11.2.定义新类型
13.11.3.size_t/int8是什么鬼?
13.11.4.typedef和#define的区别
13.11.5.小结
13.12.类型大总结
14.共用(Union)与枚举(Enum)
14.1.共用体
14.1.1.类型定义与变量定义
14.1.2.内存分析
14.1.2.1.大小
14.1.2.2.成员访问
14.1.2.3.成员瞬时有效性
14.1.3.共用体小结
14.1.4.应用
14.1.4.1.信息存储
14.1.4.2.写程序判断大小端序
14.2.枚举
14.2.1.枚举类型定义
14.2.2.枚举变量与初始化
14.2.3.枚举常量
14.2.4.应用
14.2.4.1.枚举常量在Qt中的应用
14.2.4.2.判断日期
14.2.4.3.增加bool 类型
14.3.练习
14.3.1.输出一个整型数据的字符形式
14.3.2.实现short类型变量高低位互换
14.3.3.将下面程序中case 分支常量用宏和枚举来实现
15.单向链表(List)
15.1.链表价值
15.2.静态链表
15.2.1.链表节点定义
15.2.2.图示节点
15.2.3.图示链表结构
15.2.4.代码实现
15.3.动态链表
15.3.1.链表图示
15.3.1.1.空链表
15.3.1.2.非空链表
15.3.2.链表名字解释
15.3.3.创建(尾插法)
15.3.3.1.图示
15.3.3.2.代码
15.3.3.3.内存结构
15.3.4.创建(头插法)
15.3.4.1.图示
15.3.4.2.代码
15.3.5.遍历
15.3.6.求长度
15.3.7.插入
15.3.7.1.图示
15.3.7.2.代码
15.3.7.3.点评
15.3.8.查找
15.3.9.删除
15.3.9.1.图示
15.3.9.2.代码
15.3.9.3.点评
15.3.10.排序
15.3.10.1.换值排序
15.3.10.2.换指针排序
15.3.10.3.点评
15.3.10.4.补充:冒泡
15.3.11.链表反转 
15.3.11.1.图示
15.3.11.2.代码
15.3.12.链表销毁
15.3.13.功能测试
15.4.环形链表
15.4.1.图示
15.4.2.自实现
15.5.作业
15.5.1.实现手机通讯录功能
15.5.2.输入一字符串,用链表形式储存。
15.5.3.用选择法实现单向链表的排序。
15.5.4.倒序打印单链表。
15.5.5.合并链表
15.5.6.实战面试题
16.文件(File)
16.1.文件流
16.1.1.文件流概念
16.1.2.文件类型
16.1.2.1.文件分类
16.1.2.2.图示代码展示
16.1.2.3.乱码原由
16.1.2.4.二进制与文本转化查看工具
16.1.3.文件缓冲
16.2.文件的打开和关闭
16.2.1.FILE结构体
16.2.2.fopen
16.2.3.fclose
16.3.一次读写一个字符(文本操作)
16.3.1.fputc
16.3.2.fgetc
16.3.3.关于feof的问题
16.3.4.练习
16.3.4.1.实现linux中cp命令的功能
16.3.4.2.文件的加密与解密
16.4.一次读写一行字符(文本操作)
16.4.1.什么是行
16.4.1.1.定义
16.4.1.2.平台差异
16.4.1.3.测试
16.4.1.4.dos2unix命令
16.4.2.fputs
16.4.3.fgets
16.4.4.关于feof的问题
16.4.5.注意事项
16.4.6.练习
16.4.6.1.读以下文件,请问fgets共执行了多少次?
16.4.6.2.读配置文件,过滤掉以#开头的注释行和空行。
16.4.6.3.文本等号以后求和
16.5.一次读写一块数据(二进制操作)
16.5.1.fwrite / fread
16.5.2.试读文本文件
16.5.2.1.写特殊字符进文件
16.5.2.2.从文件中读特殊字符
16.5.2.3.返回值的陷阱
16.5.3.二进制读写才是本质
16.5.3.1.文件的加密与解密
16.5.4.读写结构体是长项
16.5.5.课堂实战-管理系统
16.6.文件指针偏移
16.6.1.rewind
16.6.2.ftell
16.6.3.fseek
16.6.3.1.空洞文件
16.7.练习
16.7.1.文本文件内容排序(行数不能变)
16.7.2.修改文件内容
17.位操作(Bit Operation)
17.1.位操作与逻辑操作
17.2.数据的二进制表示
17.2.1. 8位二进制数据的补码
17.2.2.二进制打印
17.3.位操作
17.3.1.位与(&)
17.3.2.位或(|)
17.3.3.位取反(~)
17.3.4.位异或(^)
17.3.5.左移(<<)
17.3.6.右移(>>)
17.3.7.优先级
17.3.7.1.计算如下值:
17.3.7.2.简记结论
17.4.应用
17.4.1.掩码(mask)
17.4.2.功能
17.4.3.生成
17.5.课常实战
17.5.1.输出位数
17.5.2.判断一个数是不是2的幂数。
17.5.3.实现循环移位
17.6.提高篇
17.6.1.无参交换
17.6.1.1.有参交换
17.6.1.2.无参交换
17.6.2.异或加密(文本与二进制)
17.6.3.循环移位加密(文本与二进制)
17.6.4.求最值
17.7.练习
17.7.1.打印数据的二进制形式(32位)
17.7.2.返转一个数据的最后n位。
17.7.3.依数据的符号们判断正负。
17.7.4.练习加密二进制文件
18.预处理(Pre Compile)
18.1.发生时机
18.2.宏(Macro)
18.2.1.不带参宏
18.2.1.1.宏常量
18.2.1.2.宏类型
18.2.2.带参宏(宏函数)
18.2.2.1.宏函数
18.2.2.2.宏出错处理函数
18.2.3.取消宏
18.2.3.1.取消宏常量
18.2.3.2.取消宏函数
18.3.条件编译(Condition Compile)
18.3.1.单双路(#ifdef / #ifndef #else #endif)
18.3.2.单双多路(#if #elif #endif)
18.3.2.1.支持不同编译器版本
18.3.2.2.编译跨平台程序
18.3.3.编译期指定宏gcc -D
18.4.头文件包含(#include)
18.4.1.包含的意义
18.4.2.包含的方式
18.4.2.1.方式<>
18.4.2.2.方式" "
18.4.3.多文件编程
18.4.3.1.多文件编程意义
18.4.3.2.多文件编程的前题
18.4.3.3.实例
18.4.4.定义头文件
18.4.4.1.定义头文件
18.4.4.2.头文件自包含
18.4.4.3.避免头文件重复包含
18.4.5.相互包含的避免
18.5.其它
18.5.1.#运算符 利用宏创建字符串
18.5.2.##运算符 预处理的粘和剂
18.5.3.预定义宏
18.5.4.变参函数
18.5.4.1.何为变参
18.5.4.2.语法
18.5.4.3.实战
18.5.4.4.miniprintf
18.5.5.变参宏(variadic macros)
18.6.练习
18.6.1.宏展开有次序吗?
18.6.2.实现一个日志函数
18.6.3.读懂下面的宏函数(来自cocos2dx)
19.项目
19.1.项目简介
19.2.概要设计
19.3.详细设计
19.4.实现
19.4.1.界面菜单实现
19.4.2.链表实现
19.4.3.文件读写实现
19.5.SVN版本管理控制
20.附录(Appendix)
20.1.参考书目
20.2.ascii码表详解
20.3.ascii特殊字符解释
20.4.运算符优先级
20.5.易错优先级集锦
20.6.vs2013中使用技巧
20.6.1.禁用_s版本函数的方法
20.7.附练习答案
20.7.1.第六章程序设计
20.7.1.1.百钱买百鸡的问题
20.7.2.第七章数组
20.7.2.1.数组去重
20.7.2.2.数组合并有序
20.8.章节思维导图
20.8.1.常变量与数据类型
20.8.2.运算符与表达式
20.8.3.数组
20.8.4.函数
20.8.5.作用域与运算符
20.8.6.字符串
20.8.7.文件
20.8.8.位运算
20.8.9.预处理
原创作者: 王桂林 技术交流:QQ 329973169 零基础入门 C 语言 勤学如春起之苗,不见其增,日有所长; 辍学如磨刀之石,不见其损,日有所亏。 Auth : 王桂林 Mail : guilin_wang@163.com O r g : 能众软件 Web : http://edu.nzhsoft.cn
原创作者: 王桂林 技术交流:QQ 329973169 版本信息: 版本 V1.0 V1.1 V1.2 修订人 王桂林 王桂林 王桂林 审阅人 时间 组织 2016.02.02 2016.11.01 2016.04.01 能众软件科技有限公司 更多学习: - 1 - 更多视频:http://edu.nzhsoft.cn
原创作者: 王桂林 技术交流:QQ 329973169 1. Hello World................................................................................................................................. - 1 - 1.1. 源程序.............................................................................................................................- 1 - 1.1.1. C 语言版............................................................................................................... - 1 - 1.1.2. C++版.................................................................................................................... - 1 - 1.1.3. hello word collection............................................................................................ - 1 - 1.2. 注释.................................................................................................................................- 1 - 1.3. 从源程序到可执行程序................................................................................................ - 2 - 1.3.1. 集成开发环境:................................................................................................. - 2 - 1.3.2. 手动编译:......................................................................................................... - 2 - 1.4. 致敬大师.........................................................................................................................- 3 - 2. Linux 常用基础命令.................................................................................................................. - 5 - 2.1. 版本选择.........................................................................................................................- 5 - 2.1.1. 内核版本............................................................................................................. - 5 - 2.1.2. 发行版本............................................................................................................. - 5 - 2.2. 目录结构.........................................................................................................................- 6 - 2.2.1. 系统目录............................................................................................................. - 6 - 2.2.2. 分区与目录......................................................................................................... - 8 - 2.2.3. 路径................................................................................................................... - 10 - 2.3. 常用命令...................................................................................................................... - 10 - 2.3.1. 命令格式........................................................................................................... - 10 - 2.3.2. 目录切换........................................................................................................... - 10 - 2.3.3. 文件操作........................................................................................................... - 10 - 2.3.4. 用户管理........................................................................................................... - 11 - 2.3.5. 解压缩命令....................................................................................................... - 11 - 2.3.6. 网络命令........................................................................................................... - 11 - 2.3.7. Ubuntu 下软件安装...........................................................................................- 11 - 2.3.8. 其它命令参考................................................................................................... - 12 - 2.4. vim 文本编辑.................................................................................................................- 12 - 2.4.1. vim 编辑器中有三种状态模式......................................................................... - 12 - 2.4.2. vim 编辑器的启动与退出................................................................................. - 12 - 2.4.3. 文件操作........................................................................................................... - 12 - 2.4.4. 光标移动操作................................................................................................... - 13 - 2.4.5. 编辑操作........................................................................................................... - 13 - 2.4.6. 查找与替换操作............................................................................................... - 14 - 2.4.7. 学习工具 vimtutor............................................................................................- 15 - 2.4.8. vim 最简易配置................................................................................................ - 15 - 2.4.9. vim 插件..............................................................................................................- 15 - 2.4.10. vim 与 HHKB.................................................................................................... - 15 - 2.5. ftp 服务..........................................................................................................................- 16 - 2.5.1. 安装................................................................................................................... - 16 - 2.5.2. 服务端配置....................................................................................................... - 16 - 2.5.3. 客户端访问....................................................................................................... - 17 - 3. C 语言与自然语言................................................................................................................... - 18 - - 2 - 更多视频:http://edu.nzhsoft.cn
原创作者: 王桂林 技术交流:QQ 329973169 3.1. 语法规则...................................................................................................................... - 18 - 3.2. 程序与流程.................................................................................................................. - 18 - 3.2.1. 程序................................................................................................................... - 18 - 3.2.2. 流程和流程图................................................................................................... - 19 - 3.2.3. 常用制图工具................................................................................................... - 20 - 4. 常/变量与数据类型(DataType).............................................................................................. - 21 - 4.1. C 语言中的关键字........................................................................................................ - 21 - 4.2. 变量(Variable)...............................................................................................................- 22 - 4.2.1. 变量的定义....................................................................................................... - 22 - 4.2.2. 变量的命名规则:........................................................................................... - 22 - 4.2.3. 交换两个变量的内容....................................................................................... - 22 - 4.2.4. 驼峰命名法....................................................................................................... - 23 - 4.3. 内存模型...................................................................................................................... - 23 - 4.3.1. 物理基础........................................................................................................... - 23 - 4.3.2. CPU 读写内存.....................................................................................................- 24 - 4.3.3. 读写流程:....................................................................................................... - 25 - 4.3.4. 代码演示........................................................................................................... - 26 - 4.4. 计算机的基石补码...................................................................................................... - 26 - 4.4.1. 计算机编码基础............................................................................................... - 26 - 4.4.2. 补码的编码规则............................................................................................... - 27 - 4.4.3. 小结................................................................................................................... - 29 - 4.5. 数据类型...................................................................................................................... - 29 - 4.5.1. 类型总揽........................................................................................................... - 30 - 4.5.2. 基本类型之数值类型....................................................................................... - 30 - 4.5.3. 基本类型之字符类型....................................................................................... - 32 - 4.6. 常量(Constant)............................................................................................................. - 36 - 4.6.1. 常量类型........................................................................................................... - 36 - 4.6.2. 常量的大小....................................................................................................... - 37 - 4.7. 格式输入与输出.......................................................................................................... - 38 - 4.7.1. printf................................................................................................................... - 38 - 4.7.2. scanf.................................................................................................................... - 42 - 4.7.3. putchar && getchar............................................................................................ - 44 - 4.7.4. 输入输出缓冲................................................................................................... - 44 - 4.8. 类型转化(Type Cast).................................................................................................... - 44 - 4.8.1. 隐式转化........................................................................................................... - 44 - 4.8.2. 强制转化........................................................................................................... - 46 - 4.9. 练习...............................................................................................................................- 47 - 4.9.1. 浮点数跟 0 值比较........................................................................................... - 47 - 4.9.2. printf 返回值有意义吗?.................................................................................. - 48 - 5. 运算符与表达式(Operator&&Express).................................................................................. - 49 - 5.1. 运符符的优先级/结合性/分类...................................................................................- 49 - 5.2. 常见运符算符及构成的表达式.................................................................................. - 51 - 5.2.1. 赋值运算符与赋值表达式............................................................................... - 51 - - 3 - 更多视频:http://edu.nzhsoft.cn
原创作者: 王桂林 技术交流:QQ 329973169 5.2.2. 算术运算符与算术表达式............................................................................... - 52 - 5.2.3. 关系运算符与关系表达式............................................................................... - 53 - 5.2.4. 逻辑运算符与逻辑表达式............................................................................... - 54 - 5.2.5. 条件运算符与条件表达式............................................................................... - 56 - 5.2.6. 逗号运算符与逗号表达式............................................................................... - 58 - 5.2.7. sizeof 运算符及其表达式..................................................................................- 59 - 5.2.8. 小结................................................................................................................... - 60 - 5.3. 运算符综合练习.......................................................................................................... - 60 - 5.3.1. if(x==y) 与 if(x=y) 之间的区别。....................................................................- 60 - 5.3.2. 表达式 3==3==3 的值是多少?...............................................................- 60 - 5.3.3. 表达式 100<=a<=300,能表达[100,300]这样的区间吗?............................- 60 - 5.3.4. 如何判断,我们输入的字符在[a,z]之间。....................................................- 60 - 5.3.5. 求[100,999]内的水仙花数............................................................................... - 60 - 5.3.6. 判断输入的年份,是否为润年。...................................................................- 60 - 5.3.7. 判断数字是否是回文数。............................................................................... - 61 - 6. 程序流程设计(Flow of Control)..............................................................................................- 62 - 6.1. 选择...............................................................................................................................- 62 - 6.1.1. If else...................................................................................................................- 62 - 6.1.2. switch.................................................................................................................. - 65 - 6.1.3. 小结................................................................................................................... - 67 - 6.1.4. 练习判断按键................................................................................................... - 67 - 6.2. 循环...............................................................................................................................- 68 - 6.2.1. 循环三要素....................................................................................................... - 69 - 6.2.2. while"当"型循环................................................................................................ - 69 - 6.2.3. do while"直到"型循环....................................................................................... - 71 - 6.2.4. for"列表"型循环................................................................................................ - 76 - 6.2.5. 循环的嵌套....................................................................................................... - 78 - 6.2.6. 循环建议........................................................................................................... - 80 - 6.2.7. 循环小结........................................................................................................... - 80 - 6.2.8. 练习................................................................................................................... - 81 - 6.3. 跳转...............................................................................................................................- 83 - 6.3.1. break................................................................................................................... - 84 - 6.3.2. continue.............................................................................................................. - 84 - 6.3.3. return.................................................................................................................. - 85 - 6.3.4. goto..................................................................................................................... - 86 - 6.3.5. 练习................................................................................................................... - 86 - 6.4. 练习...............................................................................................................................- 87 - 6.4.1. 打印如下图形................................................................................................... - 87 - 7. 数组(Array).............................................................................................................................. - 88 - 7.1. 一维数组...................................................................................................................... - 88 - 7.1.1. 逻辑与声明....................................................................................................... - 88 - 7.1.2. 初始化与访问................................................................................................... - 89 - 7.1.3. 一维数组的存储............................................................................................... - 91 - - 4 - 更多视频:http://edu.nzhsoft.cn
原创作者: 王桂林 技术交流:QQ 329973169 7.1.4. 数组三要素....................................................................................................... - 92 - 7.1.5. 关于变长数组................................................................................................... - 93 - 7.1.6. 实战应用(一维数据形态).................................................................................- 93 - 7.1.7. 作业................................................................................................................... - 98 - 7.2. 二维数组...................................................................................................................... - 98 - 7.2.1. 声明/定义..........................................................................................................- 98 - 7.2.2. 初始化............................................................................................................... - 98 - 7.2.3. 二维数组的逻辑/存储....................................................................................- 100 - 7.2.4. 实战应用(二维数据形态)...............................................................................- 104 - 7.3. 数组名的二义性........................................................................................................ - 109 - 7.3.1. 一维数组名..................................................................................................... - 109 - 7.3.2. 二维数组名..................................................................................................... - 110 - 7.4. 练习.............................................................................................................................- 111 - 7.4.1. 写出冒泡排序的逻辑,并实现冒泡排序。.................................................- 111 - 7.4.2. 无序数组查找,返回下标(线性查找)........................................................- 111 - 7.4.3. 有序数组查找(折半查找).........................................................................- 111 - 7.4.4. 求出矩阵两条对角线上的元素之和.............................................................- 111 - 7.4.5. 有序数组去重,并返回去重后数组元素新个数。.....................................- 111 - 7.4.6. 二维数组按列移位......................................................................................... - 111 - 7.4.7. 五子棋判输赢................................................................................................. - 111 - 8. 指针(Pointer)......................................................................................................................... - 114 - 8.1. 认识内存.................................................................................................................... - 114 - 8.1.1. 线性的内存..................................................................................................... - 114 - 8.1.2. 变量的地址与大小......................................................................................... - 115 - 8.1.3. 间接访问内存................................................................................................. - 116 - 8.2. 指针常量.................................................................................................................... - 117 - 8.2.1. 指针是有类型地址常量................................................................................. - 117 - 8.3. 指针变量.................................................................................................................... - 118 - 8.3.1. 定义................................................................................................................. - 118 - 8.3.2. 解析................................................................................................................. - 118 - 8.3.3. 指针变量大小................................................................................................. - 119 - 8.3.4. 初始化及间接访问......................................................................................... - 119 - 8.3.5. 指向/被指向/更改指向..................................................................................- 120 - 8.3.6. NULL(色即空)..............................................................................................- 121 - 8.3.7. 课常实战......................................................................................................... - 122 - 8.4. 指针运算.................................................................................................................... - 122 - 8.4.1. 赋值运算......................................................................................................... - 122 - 8.4.2. 算术运算......................................................................................................... - 122 - 8.4.3. 关系运算......................................................................................................... - 124 - 8.4.4. 小结................................................................................................................. - 124 - 8.5. 数组遇上指针............................................................................................................ - 124 - 8.5.1. 一维数组的访问方式..................................................................................... - 124 - 8.5.2. 二维数组的访问方式..................................................................................... - 127 - - 5 - 更多视频:http://edu.nzhsoft.cn
原创作者: 王桂林 技术交流:QQ 329973169 8.6. 练习.............................................................................................................................- 130 - 8.6.1. 用指针法逆序打印一个数组。.....................................................................- 130 - 8.6.2. 往指定内存写入数据..................................................................................... - 130 - 8.6.3. 判判是否是回文串......................................................................................... - 130 - 9. 函数(Function).......................................................................................................................- 132 - 9.1. c 标准库及库函数.......................................................................................................- 132 - 9.1.1. 库存在的意义................................................................................................. - 132 - 9.1.2. 如何使用库函数............................................................................................. - 132 - 9.1.3. 库函数使用示例............................................................................................. - 133 - 9.1.4. 常用库函数..................................................................................................... - 138 - 9.2. 自定义函数................................................................................................................ - 139 - 9.2.1. 语法格式......................................................................................................... - 139 - 9.2.2. 调用方法......................................................................................................... - 140 - 9.2.3. 前向声明......................................................................................................... - 141 - 9.2.4. 函数返回值..................................................................................................... - 141 - 9.2.5. 实参与形参..................................................................................................... - 141 - 9.3. 传值与传址................................................................................................................ - 142 - 9.3.1. 传值与传址的比较......................................................................................... - 142 - 9.3.2. 图解传值与传址............................................................................................. - 144 - 9.3.3. 如何来传递一个一维数组.............................................................................- 144 - 9.3.4. 如何来传递一个二维数组.............................................................................- 147 - 9.3.5. 小结................................................................................................................. - 147 - 9.4. 函数调用.................................................................................................................... - 147 - 9.4.1. 普通调用......................................................................................................... - 147 - 9.4.2. 递归调用......................................................................................................... - 148 - 9.5. 递归(Recursive)详解.................................................................................................. - 149 - 9.5.1. 递归定义......................................................................................................... - 149 - 9.5.2. 递归小结......................................................................................................... - 151 - 9.5.3. 递归与循环论述............................................................................................. - 152 - 9.5.4. 递归练习......................................................................................................... - 153 - 9.6. 练习.............................................................................................................................- 154 - 9.6.1. 如何产生[m,n]以内的随机数。.................................................................... - 154 - 9.6.2. 产生 30 个不重复的随机数...........................................................................- 154 - 9.6.3. 请用函数封装基于数组的冒泡排序,选择排序。.....................................- 154 - 9.6.4. 用函数的思想来支解选择法排序.................................................................- 154 - 9.6.5. 请用函数封装基于数组的二分查找。.........................................................- 155 - 9.6.6. 求中位数......................................................................................................... - 155 - 10. 变量作用域/生命周期/修饰符.......................................................................................... - 156 - 10.1. 作用域(Scope).......................................................................................................... - 156 - 10.1.1. 作用域........................................................................................................... - 156 - 10.1.2. 作用域叠加................................................................................................... - 157 - 10.1.3. 全局命名污染............................................................................................... - 158 - 10.2. 生命周期(Duration)..................................................................................................- 159 - - 6 - 更多视频:http://edu.nzhsoft.cn
原创作者: 王桂林 技术交流:QQ 329973169 10.2.1. 局部变量....................................................................................................... - 159 - 10.2.2. 全局变量....................................................................................................... - 159 - 10.3. 修饰符(Storage Description )...................................................................................- 159 - 10.3.1. auto(大将军).................................................................................................. - 160 - 10.3.2. register(小太监)............................................................................................. - 160 - 10.3.3. extern(通关文牒)........................................................................................... - 161 - 10.3.4. static(柱国老臣|限离出境)........................................................................... - 163 - 10.4. 小结.......................................................................................................................... - 166 - 11. 字符串(String)......................................................................................................................- 167 - 11.1. 引入.......................................................................................................................... - 167 - 11.2. 字符串常量.............................................................................................................. - 167 - 11.2.1. 字符串大小................................................................................................... - 168 - 11.2.2. 字符串存储................................................................................................... - 168 - 11.2.3. C 语言是如何处理字符串常量.....................................................................- 169 - 11.3. 字符串与字符数组.................................................................................................. - 169 - 11.3.1. 常量字符串不可更改...................................................................................- 169 - 11.3.2. 字符串与字符数组比较...............................................................................- 170 - 11.3.3. 字符数组存储字符串...................................................................................- 170 - 11.3.4. 小结............................................................................................................... - 172 - 11.4. 字符串的输入与输出.............................................................................................. - 172 - 11.4.1. 输出............................................................................................................... - 172 - 11.4.2. 输入............................................................................................................... - 172 - 11.5. 字符串操作函数...................................................................................................... - 173 - 11.5.1. 字符数组原生操作....................................................................................... - 173 - 11.5.2. 库函数操作................................................................................................... - 174 - 11.6. 字符串操作函数自实现.......................................................................................... - 178 - 11.6.1. myStrlen..........................................................................................................- 178 - 11.6.2. myStrcpy......................................................................................................... - 179 - 11.7. 多文件编程.............................................................................................................. - 180 - 11.7.1. 函数声明(.h)..................................................................................................- 180 - 11.7.2. 函数实现(.c).................................................................................................. - 180 - 11.7.3. 头文件包含#include..................................................................................... - 181 - 11.8. 指针数组.................................................................................................................. - 181 - 11.8.1. 定义............................................................................................................... - 181 - 11.8.2. 应用............................................................................................................... - 182 - 11.8.3. 思考............................................................................................................... - 185 - 11.9. 你所追过的那些"零"...............................................................................................- 185 - 11.9.1. 零所代表的意义........................................................................................... - 185 - 11.9.2. 实例分析....................................................................................................... - 185 - 11.10. 作业........................................................................................................................ - 186 - 11.10.1. 自实现 myStrcat.........................................................................................- 186 - 11.10.2. 自实现 myStrcmp........................................................................................- 186 - 11.10.3. 以下代码能打印什么?.............................................................................- 187 - - 7 - 更多视频:http://edu.nzhsoft.cn
分享到:
收藏