摘要:
指针是C语言最重要的特性之一, 也是最容易被误解的特性之一。 现代计算机把内存分割为字节(Byte), 每个字节都有唯一的地址(Address), 如果内存中有n个字节,可以把地址看做0~n 1的数。 程序中的每个变量都占据字节(至少1字节),把第一个字节的地址称为”变量的地址”, 假设变量int 阅读全文
摘要:
二维数组,又称为矩形数组 可以不太准确地理解为“数组的数组” 也可以认为是一个表格 然而内存中并不是表格存储: 二维数组的初始化 第一维度可以省略 所有元素可以写在一个花括号中,计算机认识,但是对人来说可读性太差。 具体代码如下: c include int main(int argc, char 阅读全文
摘要:
qsort函数在在stdlib.h中。 函数原型 参数 base 这就是指针的数组的第一个元素进行排序 nitems 这是由基部指向的数组中的元素数目 size 这是在数组中的每个元素的大小(以字节为单位) compar 这个函数比较两个元素 返回值:不返回任何值 缺点:对于有多个重复值的数组来说, 阅读全文
摘要:
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序 它采用了一种分治的策略,通常称其为分治法(Divide and ConquerMethod) 基本思想: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对 阅读全文
摘要:
冒泡排序三步走: 循环 交换 回一手 一个数和其它数比较(循环) 每个数都要做这种比较(再一层循环) 准备工作 绿色代表不必要的比较 通过以下处理可以提高效率: 1.内层循环每次 i 2.外层循环最后一次不需要 回一手 总结:冒泡排序三步走, 1. 循环 2. 交换 3. 回一手 不回一手也行,就是 阅读全文
摘要:
数组是: 一组数据 一组类型相同的数据 在计算机底层,数组是一块连续的内存 为什么使用数组? 一年12个月 int m1=1, m2=2, m3=3, ... 麻烦 数组示例: c include int main(int argc, char argv[]) { // 数组赋值 int month 阅读全文
摘要:
函数直接或间接调用自身 每次调用必须获得一些进展,进一步靠近目标 达到目标就不再调用自身 阅读递归函数不要纠缠于执行过程,而是相信递归函数会顺利完成任务 例:阶乘 不用递归 使用递归 c include int factorial(int n) { if(n == 0) { return 1; } 阅读全文
摘要:
头文件.h Dev C++可以建C项目,也可以建C++项目,下面分C和C++两种情况讨论。 c.h C语言中,头文件往往不是必须的,只是描述性的文件。 因此,C项目中可以没有.h文件。 cpp.h 下面以C++项目为例解释头文件: 自定义函数可以先声明,在main函数之后定义 这个叫做函数原型(fu 阅读全文
摘要:
局部变量 普通的局部变量也叫动态变量,默认有个关键字叫auto,可以省略。有两种形式: 1.函数内的局部变量 2.复合语句内的局部变量:for(int i = 0; i void buy() { auto int timesAuto = 1;// 普通局部变量(auto可以省略) printf("买 阅读全文
摘要:
为实现特定目的而编写的一段可被调用的代码 简单地讲:函数就是一组语句,取了个名字 别名:子例程(routine)/方法(Method,一般面向对象的语言使用这个叫法) 函数的组成部分 以主函数为例: | 返回类型 | int | | | | | 函数名 | main | | 参数 | (int ar 阅读全文