Chinaunix首页 | 论坛 | 博客
  • 博客访问: 328876
  • 博文数量: 79
  • 博客积分: 2466
  • 博客等级: 大尉
  • 技术积分: 880
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-07 16:47
文章分类

全部博文(79)

文章存档

2014年(3)

2012年(7)

2011年(14)

2010年(2)

2009年(2)

2008年(2)

2007年(18)

2006年(31)

分类: C/C++

2006-03-15 15:36:30

70- typedef和#define在很多情况下是类似的,不过记住typedef是由编译器解释的,通常来说比#define更强。使用typedef的两个主要原因是:
  1) 用来提高程序的可移植性。对任何依赖于具体运行环境的变量定义,如果用typedef来做,移植的时候只需要更改typedef就可以了。标准库中的ptrdiff_t,size_t类型都是这样的例子。
  2) 用来给程序提供更好的注释性文档。例如Treeptr类型显然比struct Treenode *类型更直观。
 
 
71- 对一个联合体来说,标准只保证其实际大小足够容纳其中最大的一个成员,至于这个大小的具体数值,是依赖于具体实现的。使用一个结构体的时候,放进去的是什么,取出的必须也是什么,如果放入的取出的不是同一个成员,最终的结果也是依赖于具体实现的。
 
 
72- 如果对一个联合体做初始化,注意只能按照其中第一个成员的类型提供初值。
 
 
73- bitfield,即位域,是一个单一的word中相邻的若干bit集合。其中的word是一个依具体的实现而有不同定义的概念,一般是2-4个字节。位域中可以有匿名域,这样的匿名域通常是用来填充空白的。
 
 
74- putchar和printf可以交替出现,标准保证输出的结果和对这些函数的调用有同样的顺序。
 
 
75- 使用变长参数表的时候要包含stdarg.h。注意变长参数表使用结束后,程序返回之前一定要调用va_end做清理工作。
 
 
76- ferror是标准库中的一个函数用来判断某个文件指针FILE *fp上面是否发生了错误。
 
 
77- 调用fgets(char *, int max, FILE *),最多读入max-1个字符,并且是'\0'结尾的。
阅读(746) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~