摘要: 常用shell命令cd 跳转pscd .. 返回上一级mkdir 创建文件夹lsdir 显示文件夹rmdir 删除文件夹pwd 显示当前路径cp 拷贝ping ifconfiguseradd+用户名 添加用户(root权限才能)password+用户名 不写此句即不设密码;不写用户名即为当前用户设密码userdel+用户名 删除用户userdel -r 用户名 删除用户以及用户主目录rm -rf 删除所有内容,包括目录和文件 r表示递归,f表示强制find -name 文件名 查找文件在当前文件夹下 阅读全文
posted @ 2013-05-18 16:28 独墅一枝花 阅读(316) 评论(0) 推荐(0)
摘要: 希尔排序,也称递减增量排序算法,是插入排序的一种高速而稳定的改进版本。希尔排序是基于插入排序的以下两点性质而提出改进方法的:1.插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率2.但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位步长的选择是希尔排序的重要部分。只要最终步长为1任何步长串行都可以工作。算法最开始以一定的步长进行排序。然后会继续以一定步长进行排序,最终算法以步长为1进行排序。当步长为1时,算法变为插入排序,这就保证了数据一定会被排序。代码如下:ShellSort.c文件如下:#include "ShellSort.h" 阅读全文
posted @ 2013-05-18 16:22 独墅一枝花 阅读(198) 评论(0) 推荐(0)
摘要: C语言中数组的长度能不能为0?长度为0的数组在标准C和C++中是不允许的,如果使用长度为0的数组,编译时会产生错误,提示数组长度不能为0。但在GNUC中,这种用法却是合法的。它的最典型的用法就是位于数组中的最后一项,如上面所示,这样做主要是为了方便内存缓冲区的管理。如果你将上面的长度为0的数组换为指针,那么在分配内存时,需采用两步:首先,需为结构体分配一块内存空间;其次再为结构体中的成员变量分配内存空间。这样两次分配的内存是不连续的,需要分别对其进行管理。当使用长度为0的数组时,则是采用一次分配的原则,一次性将所需的内存全部分配给它。相反,释放时也是一样的。对于长度为的数组,在gcc手册中,有 阅读全文
posted @ 2013-05-18 09:37 独墅一枝花 阅读(1884) 评论(0) 推荐(1)
摘要: 算法描述如下:1.从第一个元素开始,该元素可以认为已经被排序2.取出下一个元素,在已经排序的元素序列中从后向前扫描3.如果该元素(已排序)大于新元素,将该元素移到下一位置4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置5.将新元素插入到该位置后6.重复步骤2~5代码如下:Insertio... 阅读全文
posted @ 2013-05-18 09:31 独墅一枝花 阅读(172) 评论(0) 推荐(0)
摘要: 1.float型与零值比较的语句if(x 0.000001) // !=0if(x > -0.000001 && x < 0.000001)// =02.float型与float型如何判断相等浮点数的表示是不精确的,不能直接比较两个数是否完全相等,一般都是在允许的某个范围内认为像个浮点数相等,如有... 阅读全文
posted @ 2013-05-18 00:03 独墅一枝花 阅读(831) 评论(0) 推荐(0)
摘要: 硬件平台:32位X86计算机软甲平台:Windows xp系统sizeof(int) = 4;//4个字节sizeof(float) = 4;//4个字节sizeof(double) = 8;//8个字节相关问题1:float型和double型的精度问题#include <stdio.h>int main(){ float f = 0.1; return 0;}这段代码编译的时候会出现警告原因就是0.1这样的小数默认保存为double型的,所以此处赋给float型会发生截断;float占四个字节,double占八个字节 0.1本身是double型的, floatf = 0.1f 如 阅读全文
posted @ 2013-05-17 23:29 独墅一枝花 阅读(2808) 评论(0) 推荐(0)
摘要: 归并排序算法的实现和理解MergeSort.c文件如下:#include "MergeSort.h"#include <stdlib.h>#include <string.h> //memcpy的头文件void Merge(int R[],int low, int mid, int high)//合并函数{ int* R1; int i,j,k; k = 0; i = low; j = mid+1; R1 = (int*)malloc((high-low+1)*sizeof(int)); while(i<=mid && j< 阅读全文
posted @ 2013-05-17 21:33 独墅一枝花 阅读(225) 评论(0) 推荐(0)
摘要: 1.memcpy()函数的实现void *memcpy(void *dest, const void *src, size_t n);从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中void* memcpy(void* dest, const void* source, size_t count){ char *ret = (char *)dest; char *dest_t = ret;//中间变量 char *source_t = (char *)source;//中间变量 while (count--) ... 阅读全文
posted @ 2013-05-17 21:32 独墅一枝花 阅读(1232) 评论(0) 推荐(1)
摘要: 段寄存器:CS:代码段DS:数据段SS:堆栈段用作内存指针的特殊寄存器:ebp:栈基址指针,指向栈底esp:栈顶指针指令指针寄存器:eip:指向下一条要执行的指令的地址,同CS一同指向即将执行的那条指令的地址,如CS:EIP特别的指令:call 指令:执行call 指令时:会把当前eip的值压栈保存,并使得eip等于被调用函数的起始地址。leave指令:等价于下面两条指令:movl %ebp, %esppopl %ebpret指令:等价于 popl %eip 阅读全文
posted @ 2013-05-15 19:19 独墅一枝花 阅读(616) 评论(0) 推荐(0)
摘要: 首先介绍一下反汇编命令:objdump -d bomb>a.s 意思是将可执行文件bomb进行反汇编,反汇编的代码存储在a.s文件中gdb常用命令(注:bomb是elf格式的可执行文件):gdb bomb 进入调试quit 退出调试r 运行/重新运行disas phase_1 显示函数phase_1的汇编代码si单步执行c 继续执行x/s 0x**** 以字符串形式查看内容;以s形式显示,s就是字符串的意思p $eax 打印ax的值b phase_1 给函数phase_1设置断点b *0x**** 给此地址设置断点d 2删除第2个断点i r查看所有寄存器值info b查断点 阅读全文
posted @ 2013-05-14 22:32 独墅一枝花 阅读(201) 评论(0) 推荐(0)