博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  C Language

摘要:http://www.cnblogs.com/hibernate6/archive/2010/08/24/2522057.html 阅读全文

posted @ 2014-09-05 10:06 bug yang 阅读(221) 评论(0) 推荐(0) 编辑

摘要:1、指针确实比较难,理解起来还是需要多写代码。现在先记录一点,以后慢慢积累。指针只是将自己指向有内存空间的数据,指针自己是不占据内存空间的。所以如果指针没有通过malloc、realloc非配空间的话,它只是指向。 阅读全文

posted @ 2012-05-06 00:54 bug yang 阅读(187) 评论(0) 推荐(0) 编辑

摘要:例子一:#include #include //pid_t类型定义 #include //函数fork(),getpid()定义 void main () { pid_t pid; pid=fork(); if (pid #include //pid... 阅读全文

posted @ 2012-03-21 16:32 bug yang 阅读(744) 评论(0) 推荐(0) 编辑

摘要:#gcc -c foo.c -o foo.o #gcc -c bar.c -o bar.o #ar rcs libfoobar.a foo.o bar.o 阅读全文

posted @ 2012-03-21 11:43 bug yang 阅读(124) 评论(0) 推荐(0) 编辑

摘要:file1: file1.o file2.o gcc file1.o file2.o -o file1 file1.o: file1.c file1.h gcc -c file1.c file2.o: file2.c file2.h gcc -c file2.c 阅读全文

posted @ 2012-03-21 11:12 bug yang 阅读(128) 评论(0) 推荐(0) 编辑

摘要:TCP协议通过'''滑动窗口(SlidingWindow)'''机制解决这一问题。1. 发送端发起连接,声明最大段尺寸是1460,初始序号是0,窗口大小是4K,表示“我的接收缓冲区还有4K字节空闲,你发的数据不要超过4K”。接收端应答连接请求,声明最大段尺寸是1024,初始序号是8000,窗口大小是6K。发送端应答,三方握手结束。2. 发送端发出段4-9,每个段带1K的数据,发送端根据窗口大小知道接收端的缓冲区满了,因此停止发送数据。3. 接收端的应用程序提走2K数据,接收缓冲区又有了2K空闲,接收端发出段10,在应答已收到6K数据的同时声明窗口 阅读全文

posted @ 2011-10-28 10:36 bug yang 阅读(718) 评论(2) 推荐(0) 编辑

摘要:这篇里面涉及的函数和内部结构体请访问:http://www.cnblogs.com/bugY/archive/2011/10/26/2225152.htmlServer端/* server.c */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#define MAXLINE 80#define SERV_PORT 8000int 阅读全文

posted @ 2011-10-27 17:18 bug yang 阅读(478) 评论(0) 推荐(0) 编辑

该文被密码保护。

posted @ 2011-10-21 16:54 bug yang 编辑

摘要:简单的汇编例子:.section .data data_items: .long 10,2,4,1,7,3,0.section .text .globl _start_start: movl $0,%edi movl data_items(,%edi,4),%eax movl %eax,%ebx start_loop: cmpl $0,%eax //cmpl相当于比较函数 je exit_loop //如果eax==0,那么跳转到exit_loop je中‘e'的意思为’equal‘ i... 阅读全文

posted @ 2011-10-18 14:30 bug yang 阅读(1169) 评论(0) 推荐(0) 编辑

摘要:一、计算机体系结构基础 eax,ebx,eip为寄存器,有些寄存器保存的数据只能用于某种特定的用途,比如eip寄存器用作程序计数器,叫做特俗寄存器。而另外一些寄存器保存的数据可以用在各种运算和读写内存的指令中,比如eax寄存器,这称为通用寄存器(General-purpose Register)。 程序计数器(PC,Program Counter),保存着CPU取指令的地址,每次CPU读出程序计数器中保存的地址,然后按这个地址去内存中取指令,这时程序计数器保存的地址会自动加上该指令的长度,指向内存中的下一条指令。 指令解码器(Instruction Decoder)。CPU取上来的指... 阅读全文

posted @ 2011-10-17 13:36 bug yang 阅读(233) 评论(0) 推荐(0) 编辑

摘要:http://blogold.chinaunix.net/u2/75758/showart_1715158.html 阅读全文

posted @ 2011-09-15 11:31 bug yang 阅读(289) 评论(0) 推荐(0) 编辑

摘要:http://blog.minidx.com/2008/02/03/469.htmlatoi()将字符串转化为int整型strcpy(strMain,strTemp);将strTemp字符串复制到strMain,strMain原来的字符串被覆盖strcat(strMain,strTemp);将strTemp字符串复制到strMain后面,strMain原来的字符串保留 阅读全文

posted @ 2011-08-24 15:47 bug yang 阅读(177) 评论(0) 推荐(0) 编辑

摘要:最近经常会使用C语言读写文件,所以在此总结一下。在C语言中,文件操作都是由库函数来完成的,可以分为读和写两种操作。操作流程为使用fopen()打开文件>>使用下面的库函数读或写文件>>fclose()关闭文件。下面先列出会用到的库函数。一、打开文件fopen() 用来打开文件操作。语法:文件指针名=fopen(文件路径,使用文件方式);例子:FILE *fs = fopen("D:\\1.txt","w+");//这里是使用读写的方式打开D:\1.txt文件,同时返回一个FILE类型的指针,如果文件打不开,返回NULL使用文件的方 阅读全文

posted @ 2011-08-24 14:17 bug yang 阅读(1039) 评论(0) 推荐(1) 编辑

摘要:http://www.cnblogs.com/VRS_technology/archive/2010/09/21/1832564.htmlprehourTime (){ time_t curtime; time_t resulttime; struct tm *st; time (&curtime); st = localtime (&curtime); st->tm_hour -= 1; resulttime = mktime (st); st = localtime (&resulttime); return st;}struct tm *prehourTim 阅读全文

posted @ 2011-08-24 10:23 bug yang 阅读(287) 评论(0) 推荐(0) 编辑

摘要:#include<string>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<fcntl.h>#include<errno.h>#include<time.h>int main(){ FILE *fs=fopen("/root/uvsync/test.sql","w+"); if(fs) { fputs("insert into test (id,name) values(' 阅读全文

posted @ 2011-08-23 14:41 bug yang 阅读(169) 评论(0) 推荐(0) 编辑

摘要:效率:带参宏比函数效率高,因为,宏是编译之后把代码嵌进去了,而函数调用需要很多的步骤(比如保存现场,恢复现场等操作),但是宏生存的文件体积大,因为,替换一次宏就需要生存一个相应的代码段,而函数不会,函数只会有1次代码量。问题:有参数宏,最大的一个问题就是它对参数的多次求值,而函数只对参数求值一次。比如#define isdigit(c) ('0' <= (c) && (c) <= '9')如果我这样调用isdigit(c=getchar()), 看看问题出来了吧。所以,C标准中规定库函数可以用宏实现,但是必须保证只求值一次。其实C库中 阅读全文

posted @ 2011-08-22 13:30 bug yang 阅读(631) 评论(0) 推荐(0) 编辑

摘要:这里先记一点,数组在作为参数传递的时候,传入的只是它的首地址,通过下面的程序来理解一下:#include <stdio.h>void change(int a[]){ printf("the size of array in change function is %d\n",sizeof(a));}int main(void){ int a[]={1,2,3}; change(a); printf("the size of array in main function is %d",sizeof(a));}/***************** 阅读全文

posted @ 2011-08-22 10:11 bug yang 阅读(195) 评论(0) 推荐(0) 编辑

摘要:在vc6.0中在main函数里申请变量在内存中的布局是,先申请的在高地址,后申请的在低地址,连续申请的两个变量在内存中也是连续排列的。这里先记录一下,以后会继续补充 阅读全文

posted @ 2011-08-17 15:40 bug yang 阅读(247) 评论(1) 推荐(1) 编辑

摘要:一、原码表示法 除了符号位外,其他二进制位为数值的绝对值,这种方案称为“原码”表示法。例如: +20的原码:0 000 0000 0001 0100 -20的原码: 1 000 0000 0001 0100二、反码表示法 除了符号为以外,负数的反码表示是在原码的基础上其他二进制取反,而正数的反码表示与原码相同。如: +20的反码为: 0 000 0000 0001 0100 -20的反码为: 1 111 1111 1110 1011三、补码表示法 负数的补码表示是在反码基础上加1,而正数的反码表示与原码相同。四、为什么计算机一般采用补码表示法 原码、反码和补码是由于表示负数的三种方案,三种方案 阅读全文

posted @ 2011-08-17 14:18 bug yang 阅读(509) 评论(0) 推荐(1) 编辑

摘要:发布 阅读全文

posted @ 2011-08-17 12:53 bug yang 阅读(10653) 评论(3) 推荐(0) 编辑

点击右上角即可分享
微信分享提示