摘要: ```c #include #include #include struct Node { int _id; char s[50]; struct Node* pre;// 指向前一个节点的地址 struct Node* next;// 指向下一个节点的地址 }; void node_free(struct Node** q) { if( *q != NULL) { print... 阅读全文
posted @ 2019-07-15 21:54 虎老狮 阅读(2965) 评论(0) 推荐(0) 编辑
摘要: 节点(结构体描述) 新建节点(开辟内存空间) 参数: 为新节点id字段赋值 返回值:新节点的地址(指针) 添加节点 如果只有一个节点,不用添加 在最后追加节点 图1 定位到最后的节点: 图2 最后节点的next指向新节点: 图3 新节点的preview指针指向(前)最后节点: 计算链表中节点的个数 阅读全文
posted @ 2019-07-15 21:51 虎老狮 阅读(289) 评论(0) 推荐(0) 编辑
摘要: fopen( ) 函数:创建一个新的文件或者打开一个已有的文件 关于参数mode的取值 | r | 读 | | | | | w | 写(无文件则创建)(从头写) | | a | 写(无文件则创建)(追加) | | r+ | 读写 | | w+ | 读写。如果文件存在,则截断为零长度,如果文件不存在, 阅读全文
posted @ 2019-07-15 21:47 虎老狮 阅读(243) 评论(0) 推荐(0) 编辑
摘要: DLL:Dynamic Link Library,动态链接库。一个应用程序可使用多个DLL文件,一个DLL文件也可以被不同的应用程序使用。 1. 先新建一个dll项目 2. 再创建C项目进行调用 3. 运行 阅读全文
posted @ 2019-07-15 21:44 虎老狮 阅读(1434) 评论(0) 推荐(0) 编辑
摘要: ```c #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /*... 阅读全文
posted @ 2019-07-15 21:42 虎老狮 阅读(757) 评论(0) 推荐(0) 编辑
摘要: errno C语言不提供对错误处理的直接支持。 以返回值的形式表示是否出错。 在发生错误时,大多数的C函数调用返回1或NULL。 同时设置一个错误代码errno(全局变量),表示在函数调用期间发生了错误。 可以通过检查返回值,然后根据返回值决定怎么处理 把errno设置为0(没有错误),是一种良好的 阅读全文
posted @ 2019-07-15 21:38 虎老狮 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 如果一些函数被频繁调用,不断地有函数入栈(Stack),会造成栈空间的大量消耗。 对应这种问题,可以使用内联函数(inline)。 编译器会将内联函数的代码整段插入到调用的位置。 c include inline int parity(int a) { return (a % 2 0) ? 1 : 阅读全文
posted @ 2019-07-15 21:37 虎老狮 阅读(503) 评论(0) 推荐(0) 编辑
摘要: C预处理器是一个文本替换工具,在实际编译之前完成一些预先的处理。 C预处理器(C Preprocessor)简写为 CPP 预处理器命令都是以 开头,如: define定义宏 1. 代码文本替换 2. 增强可读性 系统提供的预定义宏 | __DATE__ | 当前日期 | 字符串常量 | | | | 阅读全文
posted @ 2019-07-15 21:33 虎老狮 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 结构体是一种变量类型,可以包含多个变量(变量类型不必相同)。 结构体的关键字是struct也是一种值类型。 例:设计一个表示“书本”的结构体: 说明:结构体中包含了double类型和char数组(表示字符串) 结构体是多个变量的集合,通过结构体加点【.】加内部变量名的形式,可以获得结构体中的字段。 阅读全文
posted @ 2019-07-15 21:32 虎老狮 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 字符串库函数 | 求字符串长度(不含结束符’\0’ ) | strlen(str) | | | | | 字符串赋值(可能造成数组越界) | strcpy(str," 水浒传 "); | | 字符串追加(可能造成数组越界) | strcat(str," 三国演义 ") | | 字符串比较(小于: 1/ 阅读全文
posted @ 2019-07-15 21:29 虎老狮 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 字符数组 C语言字符串就是字符数组。 单写字符,用单引号。如:’A’。 字符串用双引号。如:”A”、”ABC”。 ASCII码: | 字符 | 十进制数 | | | | | ‘0’ | 48 | | ‘A’ | 65 | | ‘a’ | 97 | 输出内容的换行:\n (这是一个字符’\n’) 打码 阅读全文
posted @ 2019-07-15 21:27 虎老狮 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 指针函数 返回值是指针的函数,如void malloc(...) 函数中创建“数组” c include int addition(int x,int y) { return (x+y); } int subtraction(int x,int y) { return (x y); } int mu 阅读全文
posted @ 2019-07-15 21:26 虎老狮 阅读(898) 评论(0) 推荐(0) 编辑
摘要: 数组名表示的是这个数组的首地址。即如果有int a[10],则a 相当于&a[0]。 运行结果: 指针遍历数组 指针版字符串常量 “指针版”字符串常量可像数组一样输出,不能修改,但可以直接赋值。 指针版字符串复制 字符串转置 c include include main() { char str[] 阅读全文
posted @ 2019-07-15 21:22 虎老狮 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 动态分配内存 动态分配内存,在堆(heap)中分配。 头文件 stdlib.h或malloc.h 向系统申请分配size个字节的内存空间 返回void 类型(未确定类型的指针) 可强制转换为任何类型的指针 头文件 string.h或memory.h 将内存空间s的前n个字节的值设为值c 二级指针 二 阅读全文
posted @ 2019-07-15 21:19 虎老狮 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 传值 值类型在做参数的时候,函数内使用的是实参的 副本 。 函数执行完毕后,即使函数内对参数做了修改,调用方的参数还是原来的值。 运行结果: 传引用 将地址传入参数,在地址指向的内存空间中修改具体的值,则调用方亦可取也。 运行结果: 练习:返回值,返回参数 定义一个函数,要求能够同时得到一个整型数组 阅读全文
posted @ 2019-07-15 21:16 虎老狮 阅读(1441) 评论(1) 推荐(0) 编辑
摘要: 指针是C语言最重要的特性之一, 也是最容易被误解的特性之一。 现代计算机把内存分割为字节(Byte), 每个字节都有唯一的地址(Address), 如果内存中有n个字节,可以把地址看做0~n 1的数。 程序中的每个变量都占据字节(至少1字节),把第一个字节的地址称为”变量的地址”, 假设变量int 阅读全文
posted @ 2019-07-15 21:15 虎老狮 阅读(2952) 评论(0) 推荐(0) 编辑
摘要: 二维数组,又称为矩形数组 可以不太准确地理解为“数组的数组” 也可以认为是一个表格 然而内存中并不是表格存储: 二维数组的初始化 第一维度可以省略 所有元素可以写在一个花括号中,计算机认识,但是对人来说可读性太差。 具体代码如下: c include int main(int argc, char 阅读全文
posted @ 2019-07-15 21:12 虎老狮 阅读(377) 评论(0) 推荐(0) 编辑
摘要: qsort函数在在stdlib.h中。 函数原型 参数 base 这就是指针的数组的第一个元素进行排序 nitems 这是由基部指向的数组中的元素数目 size 这是在数组中的每个元素的大小(以字节为单位) compar 这个函数比较两个元素 返回值:不返回任何值 缺点:对于有多个重复值的数组来说, 阅读全文
posted @ 2019-07-15 21:11 虎老狮 阅读(2773) 评论(0) 推荐(0) 编辑
摘要: 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序 它采用了一种分治的策略,通常称其为分治法(Divide and ConquerMethod) 基本思想: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对 阅读全文
posted @ 2019-07-15 21:09 虎老狮 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序三步走: 循环 交换 回一手 一个数和其它数比较(循环) 每个数都要做这种比较(再一层循环) 准备工作 绿色代表不必要的比较 通过以下处理可以提高效率: 1.内层循环每次 i 2.外层循环最后一次不需要 回一手 总结:冒泡排序三步走, 1. 循环 2. 交换 3. 回一手 不回一手也行,就是 阅读全文
posted @ 2019-07-15 21:07 虎老狮 阅读(1175) 评论(0) 推荐(0) 编辑