摘要: [TOC] 1.栈取返回变量的值,变量的地址 2.const 3.二级指针 第一种内存模型 指针数组:它是一个数组,数组中的每个元素是指针类型 char p1 = "111"; char p2 = "222"; char p3 = "333"; char p[] = {"111","222","33 阅读全文
posted @ 2018-09-25 22:50 神秘的火柴人 阅读(370) 评论(0) 推荐(0) 编辑
摘要: [TOC] 1.strlen()、sizeof() strlen:测字符串长度,不包含数字0,字符'\0' sizeof:测数组长度,包含数字0,字符'\0' 2.c语言字符串,以字符'\0',数字0结尾 3.数组名是一个指针常量 原因:便于内存回收 4.利用strstr标准库函数找出一个字符串中s 阅读全文
posted @ 2018-09-24 15:42 神秘的火柴人 阅读(247) 评论(0) 推荐(0) 编辑
摘要: [TOC] 1.数组首地址、数组首元素地址 int a[3]; a:数组首元素地址 a+1 地址+4 &a:数组首地址 &a+1 地址+4 3 2.堆区画图 3.静态局部变量画图 4.栈的生长方向、内存存放方向、堆的存放方向 5.数组做函数参数退化为指针 原因:为了高效。若为数组,要拷贝整个数组内容 阅读全文
posted @ 2018-09-17 21:40 神秘的火柴人 阅读(271) 评论(0) 推荐(1) 编辑
摘要: [TOC] 1.二分查找 二分搜索树解决的是查找问题。 1.1递归,非递归实现 1.3利用二分查找实现lower_bound(),upper_bound()函数 2.二分搜索树定义 3.二分搜索树操作 3.1插入 3.2查找 3.3遍历(深度,层次) 3.4删除最小值 1.直接删除 2.调整删除 3 阅读全文
posted @ 2018-08-07 21:19 神秘的火柴人 阅读(212) 评论(0) 推荐(0) 编辑
摘要: [TOC] 1.堆的引出 优先队列可以处理许多问题,例如系统动态地选择优先级最高的任务进行执行;在N个元素中选出前M个元素。。。而用堆来实现优先队列有着巨大的优势,如下图所示。 2.二叉堆 2.1定义 以最大堆为例。 2.2存储 用一个数组来存储二叉堆。(注:从下标为1开始存储) 3.堆操作 3.1 阅读全文
posted @ 2018-08-06 21:36 神秘的火柴人 阅读(296) 评论(0) 推荐(0) 编辑
摘要: [TOC] 1.概念 在归并排序中,一个数组被 等分 为两部分,而在快速排序中,切分位置取决于数组的内容。所以对于特殊形式的数据,可能会参数低劣的性能。。。 2.初实现 4.2方法二:三路快排() 将数组分为三类,左边区域比标定点值小,中间区域和标定点值相等,右边区域比标定点值大。 5.应用:寻找a 阅读全文
posted @ 2018-08-04 15:38 神秘的火柴人 阅读(214) 评论(0) 推荐(0) 编辑
摘要: [TOC] 1.概念 将一个数组排序,可以递归的将它们分成两半分别排序,然后将结果归并起来。体现了分治思想。算法时间复杂度:O(nlgn) 2.自顶向下的归并排序算法(递归实现) 上图所示为归并数组a[0...15]的调用轨迹图。 2.1初实现 应用:求逆序对 归并排序中的__merge()函数,是 阅读全文
posted @ 2018-08-02 18:33 神秘的火柴人 阅读(205) 评论(0) 推荐(0) 编辑
摘要: [TOC] 1.exit()和_exit() 进程一般有两种退出方式,一种是异常终止,如调用abort(),另一种是使用exit()和_exit()系统调用正常终止。 由上图片可知,exit与_exit区别: 1)exit会执行调用退出处理程序 2)exit会执行清除I/O缓存 接下来分别对于上述两 阅读全文
posted @ 2018-07-22 22:33 神秘的火柴人 阅读(275) 评论(1) 推荐(1) 编辑
摘要: [TOC] 1.向另一个进程发送信号 ①kill函数 |int kill(pid_t pid, int siq) | | | | : : | | pid 0 | 将信号sig发给pid进程 | | pid=0 | 将信号sig发给同组进程 | | pid= 1 | 将信号sig发送给所有进程,调用者 阅读全文
posted @ 2018-07-15 15:32 神秘的火柴人 阅读(156) 评论(0) 推荐(0) 编辑