- 博客(18)
- 资源 (2)
- 收藏
- 关注
转载 《c和指针》笔记--getchar()与EOF
本文章基于:http://www.cnblogs.com/QLinux/articles/2465329.html,稍作了修改。大师级经典的著作,要字斟句酌的去读,去理解。以前在看K&R的The C Programming Language(Second Edition)中第1.5节的字符输入/输出,很迷惑getchar()和EOF的行为。因此,感觉很有必要总结一下,不然,很多
2013-04-29 09:33:31 1499
原创 《c和指针》笔记--a++和++a不是变量
#include #include int main(void){ int i=0,j=0; i++ = 10; ++j = 10; return EXIT_SUCCESS;}上面的编译时会出现一下错误:aplus2.c:6:6: error: lvalue required as left operand of as
2013-04-27 21:41:07 3232 5
原创 《c和指针》笔记--sizeof(i=1+2)
#include int main(void){ int i=0; printf("%d\n",sizeof(i=1+2)); printf("%d\n",i); return 0;}上面的代码运行结果为:40因为判断表达式的长度不需要对表达式进行求值,所以sizeof(i=1+2)并没有对i进行
2013-04-27 19:09:08 1064
原创 《c和指针》笔记--转义符\ddd和\xddd
书中有如下描述:\ddd ddd表示1~3个八进制数字,这个转义符表示的字符就是给定的八进制值所代表的字符\xddd 与上例类似,只是八进制数换成了16进制数。注意,任何十六进制数都有可能包含在\xddd序列中,但如果结果值的大小超过了表示的字符范围,其结果就是未定义。问题:为什么直说了\xddd呢,那\ddd,如果超过了表示字符的范围,会怎样呢。于是做了如下测试
2013-04-25 20:11:59 2757
原创 《c和指针》笔记--自由的c代码
下面的语句有没有问题:int/* comment */x;答案是没有问题。因为c语言中唯一的规则是相邻的标记之间必须出现多个空白字符(或注释)。也许这种语句只有在国际C混乱代码大赛中才会出现,但是能让我们能更深刻地理解C语言。
2013-04-24 21:22:22 1131
原创 《c和指针》笔记--trigrph
在ANSI标准中,定义了“三字母词”,或者成为“三联符序列”,英文为"trigraph sequences"。目的主要是为了在一些特定的字符集中,比如一些七位代码集中,解决一些特定字符的输入问题。 也许是由于这些字符集我们基本上用不到,所以在大多数C语言的书籍中,我们都看不到对“三字母词”的讲解。这里资料来源于参考ANSI C99标准(即传说中的《American Nati
2013-04-24 20:55:18 1219
原创 《c专家编程》笔记--数组和指针参数是如何被编译器修改的
实参 所匹配的形式参数数组的数组 char c[8][10];(有步长,10char) char(*)[10]; 数组指针指针数组 char *c[15];(无步长) char **c; 指针的指针 数组指针(行
2013-04-21 20:46:12 1483
转载 Ubuntu的Upstart
PS:今天在服务器上安装了。ubuntu-10.04-server-amd64版本。因为要安装oracle企业版本。所以又在线安装了GNOME基本版本。ORACLE安装好了,以及LDAP,JDK,TOMCAT都初建了好。做到最后收尾工作了,修改一下启动方式吧,让系统以后启动自动进入文本模式。问题来了。以前改变INIT值的方式不行了。最后总算找到万恶的根源:Upstart
2013-04-17 20:47:24 1869
转载 Upstart管理Ubuntu自启动服务(10.04以后适用)
从Ubuntu 10.04开始,Upstart就被引入管理系统启动的进程与服务。所以,如果要添加或禁止某些服务进程自动启动,以前的方式(比如用update-rc.d命令)就不管用了。如果你运行这个命令来停止mysql,你会得到如下信息:$>sudo /etc/init.d/mysql stopRather than invoking init scripts through /etc
2013-04-17 20:30:04 1921
原创 《c专家编程》笔记--bus error(总线错误)
在《C专家编程》中提到了总线错误bus error(core dumped)。总线错误几乎都是由于未对齐的读或写引起的。它之所以称为总线错误,是因为出现未对齐的内存访问请求时,被堵塞的组件就是地址总线。对齐的意思就是数据项只能存储在地址是数据项大小的整倍数的内存位置上。现代的计算机架构中,尤其是RISC架构,都需要字对齐,因为与任意的对齐有关的额外逻辑都会使内存系统更大且更慢。
2013-04-17 12:44:09 19467 4
转载 apache和tomcat区别
经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总结了一下: 解析一 apache支持静态页,tomcat支持动态的,比如servlet等, 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomc
2013-04-17 11:13:52 981
转载 《c专家编程》笔记--alloca函数
alloca()函数用来在栈中分配size个字节的内存空间,因此函数返回时会自动释放掉空间。alloca函数定义及库头文件如下:/* Allocate a block that will be freed when the calling function exits. */extern void *alloca (size_t __size) __THROW; //从栈
2013-04-14 09:49:39 1623
转载 《c专家编程》笔记--解释复杂的声明
右如下声明:int(*func())();int(*func())[];int(*foo[])();解释如下:1,func函数返回一个指向int返回类型,无参数函数的指针2,func函数返回一个int数组指针3,定义了一个函数指针类型的数组,函数没有参数,返回值为int诀窍就是先看声明符func,再看func右边的符号,最后看func左边的符
2013-04-13 08:43:19 1011
原创 《c专家编程》笔记--define和typedef的区别
#include #define peach inttypedef int banana;int main(void){ unsigned peach a; unsigned banana b; return 0;}上面的代码中,unsigned banana b;该行编译会出现错误。因为typedef是一种彻底的“封装
2013-04-06 13:58:12 1379
原创 《c专家编程》笔记--如何使用赋值语句拷贝整个数组的值
将数组放到结构体中,直接使用“=”就能将数组中的值全部拷贝到其他相同类型的数组中。#include struct array_tag{ int a[10];};int main(void){ struct array_tag m = {{1,2,3,4,5,6,7,8,9,0}}; int i; for(i=0;i<
2013-04-04 08:19:20 2494 17
转载 为什么硬链接不能指向目录
linux系统中的硬连接有两个限制:不能跨越文件系统和不允许普通用户对目录作硬连接。至于第一个限制,很好理解,而第二个就不那么好理解了。 我们对任何一个目录用ls -l 命令都可以看到其连接数至少是2,这也说明了系统中是存在硬连接的,而且命令ln -d 也可以让超级用户对目录作硬连接(现在好多系统已经不支持ln -d命令了,详细可以man ln查看-d选项的含义),这些都说明了系统限制对目录进
2013-04-03 16:45:46 4357
原创 《c专家编程》笔记--c语言中算术运算优先级高于移位运算
#include int main(void){ int a = 1; int b = a<<1+2; printf("%d\n",b); return 0;}上面的这段代码,结果是8,而不是4,因为算术运算优先级高于移位运算。
2013-04-02 20:56:03 2198
原创 《c专家编程》笔记--sizeof
#include #include int main(void){ int *p; int *a; a = (int*)malloc(sizeof*p); *a=1; printf("%d\n",*a); free(a); return 0;}上面这段代码,编译运行都没有任何
2013-04-01 08:43:01 1377 2
哈弗曼编码实现文件压缩
2014-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人