1、结构体类型定义:
struct [结构体名]
{
类型标识符 成员名;
类型标识符 成员名;
…………….
};
丶struct是关键字,不能省略。
丶结构体类型定义描述结构的组织形式,不分配内存
丶用无名结构体直接定义变量只能一次
丶可以将一个结构体变量赋值给另一个结构体变量
丶结构体嵌套时逐级引用
丶成员运算符(·)和指向结构体成员运算符(->)的区别
两者都是用来引用结构体变量的成员,但它们的应用环境是完全不一样,前者是用在一般结构体变量中,而后者是与指向结构体变量的指针连用,例如:有定义
struct student
{
long num;
float score;
};
struct student stud, *ptr=&stud;
则stud.num、stud.score、ptr->num等都是正确的引用方式,但ptr.num、stud->num就是不允许的,其实ptr->num相当于(*ptr).num,只是为了更为直观而专门提供了这->运算符。
最后指出,这两者都具有最高优先级,按自左向右的方向结合。
2、指向结构体变量的指针
定义形式:struct 结构体名 *结构体指针名;例 struct student *p;
3、union 共用体名
{
类型标识符 成员名;
类型标识符 成员名;
…………….
};
使几个不同类型的变量共占一段内存(相互覆盖)
类型定义不分配内存
共用体变量任何时刻只有一个成员存在
共用体变量定义分配内存,长度=最长成员所占字节数
共用体变量中起作用的成员是最后一次存放的成员
不能在定义共用体变量时初始化
可以用一个共用体变量为另一个变量赋值
4、
5、Typedef
说明:
1.typedef 没有创造新数据类型
2.typedef 是定义类型,不能定义变量
3.typedef 与 define 不同
define typedef
预编译时处理 编译时处理
简单字符置换 为已有类型命名
6、文件
文件分类
按文件的逻辑结构:
记录文件:由具有一定结构的记录组成(定长和不定长)
流式文件:由一个个字符(字节)数据顺序组成
按存储介质:
普通文件:存储介质文件(磁盘、磁带等)
设备文件:非存储介质(键盘、显示器、打印机等)
按数据的组织形式:
文本文件: ASCII文件,每个字节存放一个字符的ASCII码
(特点:存储量大、速度慢、便于对字符操作)
二进制文件:数据按其在内存中的存储形式原样存放
(特点:存储量小、速度快、便于存放中间结果)
7、文件处理方法
缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区
非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区
8、文件类型指针
文件结构体FILE
缓冲文件系统为每个正使用的文件在内存开辟文件信息区
文件信息用系统定义的名为FILE的结构体描述
FILE定义在stdio.h中
FILE *fp;
9、系统自动打开和关闭三个标准文件:
标准输入------键盘 stdin
标准输出------显示器 stdout
标准出错输出-----显示器 stderr
10、文件打开fopen
函数原型: FILE *fopen(char *name,char *mode)
功能:按指定方式打开文件
返值:正常打开,为指向文件结构体的指针;打开失败,为NULL
例 FILE *fp;
fp= fopen (“c:\\test.txt”,”r”);
例 文件打开与测试
FILE *fp;
fp=fopen(“aa.c”,“w”);
if(fp==NULL)
{ printf(“File open error!\n”);
exit(1);
}
例 FILE *fp;
char *filename=“c:\\test.txt”
fp= fopen(filename,”r”);
11、文件关闭fclose
函数原型:int fclose(FILE *fp)
功能:关闭fp指向的文件
返值:正常关闭为0;出错时,非0
12、
13、格式化I/O:fprintf与fscanf
函数原型:
int fprintf(FILE *fp,const char *format[,argument,…])
int fscanf(FILE *fp,const char *format[,address,…])
功能:按格式对文件进行I/O操作
返值:成功,返回I/O的个数;出错或文件尾,返回EOF
例 fprintf(fp,“%d,%6.2f”,i,t); //将i和t按%d,%6.2f格式输出到fp文件
fscanf(fp,“%d,%f”,&i,&t); //若文件中有3,4.5 ,则将3送入i, 4.5送入t
14、字符串I/O: fgets与fputs
函数原型:
char *fgets(char *s,int n,FILE *fp)
int fputs(char *s,FILE *fp)
功能:从fp指向的文件读/写一个字符串
返值:fgets正常时返回读取字符串的首地址;出错或文件尾,返回NULL
fputs正常时返回写入的最后一个字符;出错为EOF
fgets从fp所指文件读n-1个字符送入s指向的内存区,并在最后加一个‘\0’
(若读入n-1个字符前遇换行符或文件尾(EOF)即结束)
fputs把s指向的字符串写入fp指向的文件
15、rewind函数
函数原型: void rewind(FILE *fp)
功能:重置文件位置指针到文件开头
返值:无
fseek函数
函数原型: int fseek(FILE *fp,long offset,int whence)
功能:改变文件位置指针的位置
返值:成功,返回0;失败,返回非0值
ftell函数
函数原型: long ftell(FILE *fp)
功能:返回位置指针当前位置(用相对文件开头的位移量表示)
返值:成功,返回当前位置指针位置;失败,返回-1L,
ferror函数
函数原型: int ferror(FILE *fp)
功能:测试文件是否出现错误
返值:未出错,0;出错,非0
说明:每次调用文件输入输出函数,均产生一个新的ferror函数值,所以应及时测试
fopen打开文件时,ferror函数初值自动置为0
clearerr函数
函数原型: void clearerr(FILE *fp)
功能:使文件错误标志置为0
返值:无
说明:出错后,错误标志一直保留,直到对同一文件调clearerr(fp)或rewind或任何其它一个输入输出函数
补充
1、正数的补码和原码相同
(56)10=00111000
负数的补码
首先变成整数求原码
求得原码各位取反
取反后加1得补码
(-56)10=11001000
2、 int的取值范围 32bit
short的取值范围 16bit
long的取值范围 32bit
unsigned int的取值范围 32bit
unsigned short的取值范围 16bit
unsigned long的取值范围 32bit
float型 32bit 8bit指数位
double型 64bit 11bit指数位
3、值4.25在计算机中的存储:首先把4.25转换成二进制的表达方式,即100.01=1.0001x22
4、整数:
%d %md %-md %ld %mld %-mld
%o %mo %-mo %lo %mlo %-mlo
%x %mx %-mx %u %mu %-mu %lu %mlu %-mlu
5、实数:
%f %m.nf %-m.nf %e %m.ne %-m.ne %g
6、字符相关
%c %s %m.ns %-m.ns
Ok了,我的复习笔记基本就这些了。