随笔分类 -  C

basic language
摘要:使用简单的win32 application 写一个修改hosts文,代码非常简单,但是不好公布。分享之http://pan.baidu.com/share/link?shareid=251423&uk=2183694280当然杀毒软件会报告有病毒或者木马,应为你重定向了服务器的地址,表示理解 阅读全文
posted @ 2013-02-12 16:54 Epirus 阅读(197) 评论(0) 推荐(0)
摘要:对于前置加加跟后置加加。Q1:区别在那边主要的区别就是在赋值的时候,也就是变量使用的时候会出现区别eg. while((s1[i++]=s2[j++])!='\o') 这样就会体现出了后置加加的作用,先赋值再加加eg.while(s[i++]!='\0') 因为没有赋值的出现,代表变量没有被使用,所以跟while(s[++i]!='\0')没有区别 阅读全文
posted @ 2012-12-22 16:17 Epirus 阅读(968) 评论(0) 推荐(0)
摘要:Perfect Code Can Say Anything-----------------------------------------------------------------------------------------------------------------eg1:int array[10]={9} array=9 0 0 0 0 0 0 0 0 0int array[0]={0} array=0 0 0 0 0 0 0 0 0 0++array[0] => get the array[0] number and increase. and result arr 阅读全文
posted @ 2012-12-21 14:03 Epirus 阅读(228) 评论(0) 推荐(0)
摘要:这边的char* argv[]写的感觉非常的好,argv是一个二级指针,但是读取起来非常的方便argv[0]; 呵呵,是有点无聊了 阅读全文
posted @ 2012-10-08 15:11 Epirus 阅读(137) 评论(0) 推荐(0)
摘要:typedef struct header{.....}header;typedef header * header_p;//很方便哈 阅读全文
posted @ 2012-10-08 14:42 Epirus 阅读(122) 评论(0) 推荐(0)
摘要:强大的功能,但是有些细节需要~eg.char *s="123";printf("%4d",s);则会显示 123,前面会有一个空格,默认右对齐,所以如果想左对齐printf("%-4d",s);则会显示123 右边有一个空格,也就是左对齐。--------------------------------lovely line-------------------------------printf("%2",s);则会默认显示123不会显示两位,如果你想显示前两位,可以printf("%2.2" 阅读全文
posted @ 2012-10-08 13:55 Epirus 阅读(652) 评论(0) 推荐(0)
摘要:typedef int size;这个比较常用;typedef int(*test)(float *,float *);将函数的指针定义一种数据类型;补充函数指针:void (*pf)(char *p1,char *p2);定义一个函数指针。pf=&foo;这一步很重要,但是函数指针很麻烦,不知道它真正的用途在什么地方;pf("aa","bb");调用一个函数指针。如果结合上面的知识。那么可以使用:typedef void (*pf)(char *p1,char *p2);pf t1;t1=&foo;foo("ab", 阅读全文
posted @ 2012-10-04 16:28 Epirus 阅读(196) 评论(0) 推荐(0)
摘要:三者的区别 malloc --->分配内存 calloc ---->分配内存初始化为0 realloc---->重新调整已经分配好的内存 阅读全文
posted @ 2012-10-04 13:10 Epirus 阅读(131) 评论(0) 推荐(0)
摘要:#include <stdio.h>#include <stdlib.h>void foo(char c[10]){ c++; c[0]='a';}main(){ char s[10]={'1','2','3','4'}; foo(s); printf("%s",s);}输出的结果是:1a34从上面的代码中我们可以发现你可以对c指针进行操作,但是你是无法在main函数中对s进行操作,其实这个也很好理解,如果你在main中使用了s++那么数据将会丢失,有可能无法找回原先的地 阅读全文
posted @ 2012-09-29 14:39 Epirus 阅读(214) 评论(0) 推荐(0)
摘要:今天考试,然后碰到一个数据类型的问题,气死我了。int --->4Bunsigned int ->4Bunsigned short ->2Blong a->8Bunsigned short a->2Bshort a->2Bunsigned long a->8Blong long a->4B 阅读全文
posted @ 2012-09-28 14:51 Epirus 阅读(147) 评论(0) 推荐(0)
摘要:今天考试碰到一个问题,其实,我们一般所执行函数时,只要这个函数中不含局部全局变量,那么这个函数就是安全的。所以我们在递归分析的时候,先分析最外面一层跟,分析最里面一层没有什么区别,right?#include <stdio.h>#include <stdlib.h>void e(int n){ if(n>0){ e(--n); printf("%d",n); e(--n); }}int main(){ int a; a=3; e(a);}result=0120 阅读全文
posted @ 2012-09-28 14:14 Epirus 阅读(170) 评论(0) 推荐(0)
摘要:今天有个考试,非常有意思,就是局部全局变量#include <stdio.h>#include <stdlib.h>int counter(int i){static int count=0;count=count+i;return (count);}int main(){ int i,j; for(i=0;i<=5;i++) j=counter(i); printf("%d",j);}其实这个问题可以这么理解,假如每次count都置0,那么局部的全局变量还有什么意义呢,所以static int count只会执行一次。所以count不会每次都 阅读全文
posted @ 2012-09-28 13:56 Epirus 阅读(131) 评论(0) 推荐(0)
摘要:1.写程序的时候最头疼的就是逻辑问题,逻辑不清,就不好了,所以最好的办法就是,排除法,举例法。当让也可以数学分析所以每个判断至少要拿一个样本进行check2. 兵马未动,粮草先行,先数据结构,再写程序,所以变量的定义要准确,尽量不要重复使用一个重要的变量,也就是分工要明确。虽然断点调试很好用但是,这是程序的思维,应该用自己的判断,提供的意志信息,找出问题的所在,在开始,在中间,还是在结束处 阅读全文
posted @ 2012-09-19 13:38 Epirus 阅读(128) 评论(0) 推荐(0)
摘要:int i;for(i=0;i<2;i++){}等同于if(i<2){toDo Something} 阅读全文
posted @ 2012-09-18 15:43 Epirus 阅读(199) 评论(0) 推荐(0)
摘要:这个语句真是烦人int a(){return 3;}int b(){}int main(){printf("%d",b());return 0;}结果是得到1如果将b函数改成int b(){a();}那么结果将得到3,如果是java则不会出现中问题。C实在是太接近底层了,主要的原因就是eax的赋值情况发生了改变,当使用return是就是将数值压入eax的数值中,然后返回主函数中。当时当递归回来的时候就还将eax的数值改变,所以写递归的时候不要希望把最终的结果return回来,这是错误的,应为回家的路有太多不确定的因素,所以正确的做法就是在相应的层,做相应的事,最用将所有的结 阅读全文
posted @ 2012-09-18 09:22 Epirus 阅读(208) 评论(0) 推荐(0)
摘要:就是A,B两点取tan,对应的斜率值的对应点回落在A,B两点的范围。感觉好像是废话,其实还是有点用的这边就引入了牛顿的迭代法(detail:http://wenku.baidu.com/view/6b74c622bcd126fff7050bfe.html)然后有引入了f(x)=x^2-a,即平方根的的迭代公式,结合中值定理就可以发现随便去一个Xn的值,下一个的值就会不断的靠近根只要算出两者之间的误差值就可以求出接近根的值迭代公式:----》Xn+1=(Xn+a/Xn)/2; 初始值我们使用1来迭代,这样非常的方便。可以用递归写也可以用循环写还挺好玩的~ 阅读全文
posted @ 2012-09-13 17:06 Epirus 阅读(258) 评论(0) 推荐(0)
摘要:1.思路是先去找到中止的条件,然后从最远处往这边靠。从主函数中开启功能。递归感觉就是一种迭代。重点是递归可以往下带,不用往回走,也可以往回走,条件可以自己加,但是主题由两个一个是中止的条件,一个是下一次的方法的调用int jiechen(int n){if(n==1){ return 1;}else{return n*jiechen(n-1);}}int chitao(int n){ if(n==10){return 1;} else{return 3*chitao(n+1)}} 阅读全文
posted @ 2012-09-13 14:05 Epirus 阅读(135) 评论(0) 推荐(0)
摘要:1.Location-Value Read-Value的概念要清楚。我感觉Location-value是从内存中取出来的,而Read-value是从寄存器中拿出来的 i++运行后会返回原来的值,而++i就会直接加上2.看来内存模型还不清楚~唉 阅读全文
posted @ 2012-09-13 10:40 Epirus 阅读(132) 评论(0) 推荐(0)
摘要:while(c=getchar()!='\n');//就是应为!=的运算级高于=所以才会出现c=1while((c=getchar()!)='\n')//括号是改变自然运算级的最佳方法 阅读全文
posted @ 2012-09-13 08:24 Epirus 阅读(130) 评论(0) 推荐(0)