随笔分类 -  c语言

摘要:一.使用文件描述符,根据fd读写 fd:file descriptorint fd = open("a.txt",0); //返回的是代表文件的文件描述符char buf[1];while(1){ size_t cout = read(fd,buf,1); //返回的是读取的字符数 if(count==0) break; printf(buf); }close(fd); //关闭由该文件描述符代表的那个文件文件描述符是整数,从0开始递增。其中0表示标准输入,即键盘输入,1表示标准输出,2表示标准错误输出所以下面这一句表示从标准输入... 阅读全文
posted @ 2013-09-28 18:35 亘大 阅读(549) 评论(0) 推荐(0)
摘要:有个结构体是介样的:struct A{ int n; int m; char c;}int n 和 int m 是四个字节,char c 是一个字节,但sizeof(A)是12个字节。解释:因为在32位机器中,一个指令周期主线(?)传递32个信号(有32根和cpu相连的线的原因),可以表示4个字节大小的数据,当传递的数据不够4个字节的时候,会补齐,这就是对齐,所以A中的char类型被补到4个字节,3个4字节加起来就有12个字节了。在传输文件的时候,会出现要传的文件大小小于接受到的文件大小,可能就是这个原因。 阅读全文
posted @ 2013-09-28 17:00 亘大 阅读(200) 评论(0) 推荐(0)
摘要:1.栈一般比较小,几十兆,但递归太多,局部变量太大栈会溢出2.例子int a[100];for(int i = 0;i<100;i++) a[i] = 99;print("%d-%d-%d-%d-%d");程序的输出结果是:0-0-0-99-99解释:前面三个0不知道为什么,后面的两个99是输出了数组a的两个元素,随着程序的运行,局部变量被放入栈中,执行到print时,格式字符串"%d-%d-%d-%d-%d"需要五个整数参数,从printf四个字节四个字节处往下找,在这次运行中,前三个参数在内存空间中刚好表示为0,第四和第五个参数找到了数组a中的 阅读全文
posted @ 2013-09-28 16:45 亘大 阅读(166) 评论(0) 推荐(0)
摘要:相当于被注释掉只声明没使用的代码。测试的时候要防止程序优化的干扰,解决的方法就是用一下那段代码的结果。 阅读全文
posted @ 2013-09-28 16:00 亘大 阅读(131) 评论(0) 推荐(0)
摘要:指针就是地址,是一个整数1.指向数组的指针int a[10];int *p = a;2.指针数组int *a[10];a没占用内存3.指向指针的指针int n = 77;int *p = &n;4.指向函数的指针函数是一些指令,放在内存中,所以指向函数的指针就是指向存放函数指令的内存 阅读全文
posted @ 2013-09-28 15:57 亘大 阅读(108) 评论(0) 推荐(0)
摘要:1.用两个16进制数表示一个字节。一个字节8位,即有2的8次方个状态,一个16进制数可以表示2的四次方个状态,所以。。 ox61 ‘a’ ox41 'A' ox30 '0' ox20 ' '2.unix的换行用oa表示,苹果的换行用od表示,window为兼容所以换行用oaod表示,即遇到oa或者od都要打印换行符,所以是两个字节的长度 阅读全文
posted @ 2013-09-15 14:06 亘大 阅读(161) 评论(0) 推荐(0)
摘要:1.0开头的都是非负数,1开头的都是负数2.全一的都是-13.绝对值最大的负数开头为1,后面都是0,取非后为最大正数 阅读全文
posted @ 2013-09-15 13:50 亘大 阅读(135) 评论(0) 推荐(0)