摘要: 一些鸡肋般的小容量U盘,用起来嫌容量太少,丢了好像又觉得太可惜。不过现在将它进行一番小改造后,配合我们的电脑,就能得到一台强大的路由器,不仅省了买路由的钱,而且这台路由器在市面上基本买不到! D ...一些鸡肋般的小容量U盘,用起来嫌容量太少,丢了好像又觉得太可惜。不过现在将它进行一番小改造后,配合我们的电脑,就能得到一台强大的路由器,不仅省了买路由的钱,而且这台路由器在市面上基本买不到! DD-WRT简介 我们平常使用的每一台路由器设备,都有一个自己的操作系统OS,用于对路由设备进行各种功能设置和管理。其实我们平常所说的升级路由器固件,就是升级刷新路由设备中的操作系统,以使路由设备的功能更加 阅读全文
posted @ 2012-02-20 20:21 candyming 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2012-02-20 20:14 candyming 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 1 //双链表插入函数 2 //把一个新值插入到一个双链表中,rootp是一个指向根节点的指针 3 //value是需要插入的新值 4 //返回值:如果链表原先已经存在这个值,函数返回0 5 //如果为新值分配内存失败,函数返回-1 6 //如果新值成功地插入到链表中,函数返回1 7 #include<stdlib.h> 8 #include<stdio.h> 9 #include"doubly_liked_list_node.h"10 11 int dll_insert(register Node *rootp,int value)12 {13 r 阅读全文
posted @ 2011-12-19 21:49 candyming 阅读(832) 评论(0) 推荐(0) 编辑
摘要: 1 //插入到一个有序单链表。函数的参数是一个指向 2 //链表第一个节点的指针,以及一个需要插入的新值 3 #include<stdio.h> 4 #include<stdlib.h> 5 #include"sll_node.h" 6 7 #define FALSE 0 8 #define TRUE 1 9 sill_insert(register Node **linkp,int new_value)10 {11 register Node *current;12 register Node *new;13 //寻找正确的插入位置,方法是按序访问 阅读全文
posted @ 2011-12-19 19:59 candyming 阅读(1989) 评论(0) 推荐(1) 编辑
摘要: 在函数原型中,列出了函数期望接受的参数,但原型只能显示固定数目的参数。让一个函数在不同的时候接受不同数目的参数是不是可以呢?答案是肯定的,但存在一些限制。 考虑一个计算一系列值的平均值的函数。如果这些值存储于数组中,这个任务就太简单了,所以为了让问题变得更有趣一些,我们假定它们并不存储于数组中。先来看一个计较差的,也是不太稳定的一个解决方案: 1 //计算指定数目的值的平均值(差的方案) 2 float average(int n_value,int v1,int v2,int v3,int v4,int v5) 3 { 4 float sum=v1; 5 if(n_values>... 阅读全文
posted @ 2011-12-04 16:59 candyming 阅读(7340) 评论(1) 推荐(0) 编辑
摘要: 尾部递归是一种编程技巧。递归函数是指一些会在函数内调用自己的函数,如果在递归函数中,递归调用返回的结果总被直接返回,则称为尾部递归。尾部递归的函数有助将算法转化成函数编程语言,而且从编译器角度来说,亦容易优化成为普通循环。这是因为从电脑的基本面来说,所有的循环都是利用重复移跳到代码的开头来实现的。如果有尾部归递,就只需要叠套一个 stack,因为电脑只需要将函数的 parameter 改变再重新跑一次。例如,可以把上一次函数的输出当作下一次的输入。然而,利用尾部递归最主要的目的,是要优化。例如在 Scheme 语言中,明确规定必须针对尾部递归作优化。[1][2]可见尾部递归的作用,是非常依赖于 阅读全文
posted @ 2011-12-04 16:06 candyming 阅读(1686) 评论(1) 推荐(0) 编辑
摘要: 关于c语言部分函数的一些总结和注意事项:递归是一种强有力的技巧,但是和其他技巧一样,它也可能被误用。这里就有一个例子。阶乘的定义往往就是以递归的形式描述的。factorial(n)=1,n<=0;factorial(n)=n*factorial(n-1),n>0;这个定义同时具备了递归所需要的两个特性:1、存在限制条件,当符合这个条件时递归便不再继续;2、每次递归调用之后越来越接近这个限制条件。用这种方式定义阶乘往往引导人们使用递归来实现阶乘函数。程序如下所示: 1 //用递归方法计算n的阶乘 2 3 long factorial(int n) 4 5 { 6 7 if(n< 阅读全文
posted @ 2011-12-04 14:17 candyming 阅读(9284) 评论(0) 推荐(0) 编辑
摘要: 1 //输入一个整型值(无符号),把它转换成字符并打印它,前导0被删除 2 #include<stdio.h> 3 #include<stdlib.h> 4 void binary_to_ascii(unsigned int value); 5 int main() 6 { 7 unsigned int i; 8 printf("please input a value:\n"); 9 scanf("%d",&i);10 binary_to_ascii(i);11 system("pause");12 阅读全文
posted @ 2011-12-04 13:13 candyming 阅读(594) 评论(0) 推荐(0) 编辑
摘要: 1 //输入需要转换的数和进制数,将该数按该进制转换成对应进制数,输出结果。 2 #include <stdio.h> 3 #include<stdlib.h> 4 int Conversion(int number,int system,char output[])//要转换的数据、进制、输出数据 5 { 6 int Quotient,Balance,i=0;//商,余数和标记 7 Quotient = number; 8 9 do10 {11 Balance = Quotient % syste... 阅读全文
posted @ 2011-12-03 21:28 candyming 阅读(558) 评论(0) 推荐(0) 编辑
摘要: 是不是对指针的任何运算都是合法的呢?答案是它可以执行某些运算,但并非所有的运算都合法。除了加法运算之外,你还可以对指针执行一些其他运算,但并不是很多。 指针加上一个整数的结果是另一个指针。问题是,它指向哪里?如果你将一个字符指针加1,运算结果产生的指针指向内存中的下一个字符。float占据的内存空间不止1个字节,如果你将一个指向float的指针加1,将会发生什么?它会不会指向该float值内部的某个字节呢? 答案是否定的。当一个指针和一个整数量进行算术运算时,整数在执行加法运算前始终会根据合适的大小进行调整。这个“合适的大小”就是指针所指向类型的大小,“调整”就是把整数值和“合适的大小”相乘. 阅读全文
posted @ 2011-11-26 10:19 candyming 阅读(8940) 评论(2) 推荐(0) 编辑