连续两天没写了,今天继续!
sizeof 对象 或 sizeof (类型名)
返回一个整型值,等于指定对象或类型占用的存储空间字节数。(返回值是无符号整型值,其类型为size_t,在头文件<stddef.h>中定义)。对象可以是变量、数组或结构;类型可以是基本类型int、double等,也可以是派生类型,如结构类型或指针类型。
类型定义:提高程序的可移植性。
typedef int Length; //将Length定义为与int具有同等意义的名字
Length len;
联合:在不同时刻保存不同类型和长度的对象的变量,编译器负责跟踪对象的长度和对齐要求。
1 union u_tag{ 2 int ival; 3 float fval; 4 char *sval; 5 } u;
访问联合中的成员:
联合名.成员 //u.ival
或 联合名->成员 //u->ival
联合只能用第一个成员类型的值进行初始化,上例联合u只能作整数值进行初始化。
位字段
将多个对象保存在一个机器字中:使用类似于编译器符号表的单个二进制位标志集合。
1 #define KEYWORD 01 2 #define EXTERNAL 02 3 #define STATIC 04 4 或enum{KEYWORD = 01, EXTERNAL = 02, STATIC = 04};
位字段(bit-field)简称字符,是“字”中相邻位的集合,“字”(word)是单个的存储单元,与具体的实现有关。
1 #include <stdio.h> 2 struct{ 3 unsigned int is_keyword : 1; //冒号后的数字表示字段的宽度(用二进制位表示) 4 unsigned int is_extern : 1; 5 unsigned int is_static : 1; 6 } flags; 7 main(){ 8 printf("%d ", flags.is_keyword); //0 9 flags.is_keyword = 1; 10 printf("%d ", flags.is_keyword); //1 11 }
输入与输出
int getchar(void) //返回下一个输入字符,到文件结尾,返回EOF。符号常量EOF在头文件<stdio.h>中定义,其值一般为-1,但在程序中应该使用EOF来判断文件是否结束,这样能保证程序同EOF的特定值无关。
prog < infile //从输入文件(非键盘)中读取字符
int putchar(int) //输出字符,如发生错误,则返回EOF
prog > outfile //将标准输出设备重定向到文件中,如系统支持管道,命令行可写成:prog | outfile
printf //格式化输出,调试时用的最多了
sprintf //将输出结果存在到String中
scanf //格式化输入
1 #include <stdio.h> 2 main(){ 3 double sum, v; 4 sum = 0; 5 while(scanf("%lf", &v) == 1){ 6 printf(" %.2f ", sum+=v); 7 } 8 return 0; 9 }
标准库
1 <stdio.h> 输入与输入 2 <ctype.h> 字符类别检测 3 <string.h> 字符串 4 <math.h> 数学 5 <stdlib.h> 一些实用函数 6 <assert.h> 诊断 7 <stdarg.h> 可变参数表 8 <setjmp.h> 非局部跳转 9 <signal> 信号 10 <time.h> 日期、时间
学到最后,往往有点敷衍了事了。
就这样一本书,基本翻完了。回想自己翻过的东西,基本上已忘记了。
基础就先打到这,接下来是算法的学习,学以致用!
原文作者:lltong,博客园地址:http://www.cnblogs.com/lltong/