------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
——————————————————————————————————————————————————————————————————
一、枚举类型
1、概念:C语言提供了一种类型,这种类型的变量的取值被限定在一定的范围之内。
2、定义:enum 枚举类型名 { 枚举值1 , 枚举值2 , ... };
3、举例:
(1)定义一个变量,保存一周的第几天
enum weekday{
zhouyi ,
zhouer ,
zhousan ,
zhousi ,
zhouwu ,
zhouliu ,
zhouri
};
(2)定义iPhone手机的颜色
关于枚举类型元素的命名习惯
enum iColor{
kIcolorWhite ,
kIcolorBlack ,
kIcolorTHJ
};
(3)定义人的性别
enum Sex{
kSexMan ,
kSexWoman ,
kSexYao
};
weekday , iColor , Sex这些都是枚举类型
4、定义
(1)先定义枚举类型,再定义枚举变量
enum iColor iPhoneColor ;
iPhoneColor的取值有范围的。
(2)定义枚举类型的同时,定义变量
enum Sex { kSexMan,kSexWoman ,kSexYao} iSex;
5、赋值
iPhoneColor = kIcolorWhite ;
iSex = kSexYao;
6、枚举变量的值:枚举类型定义完成以后,系统会自动给枚举的每个元素都会赋值一个整型的初值,默认初值:第一个从0开始,以后每个都+1
7、使用:
二、typedef关键字
1、作用:起别名
2、定义:typedef 原类型名 新类型名 ;
3、使用方法
(1)给基本数据类型起别名
(2)给数组起别名
(3)给结构体起别名
(4)给枚举类型起别名
(5)给函数指针起别名
三、宏
0、typedef是起别名,宏就是替换
1、概念:C语言中我们自定义的特殊标识符,习惯大写
2、定义:#define 宏名 宏字符串(可以是常量,变量,表达式)
3、预处理指令:经常写在函数之前
4、宏替换:源程序在编译之前,由预处理程序对我们写的源代码进行处理:会把源代码中所有出现宏名的地方一律使用宏的字符串去替换。
5、书写规范:全部大写
6、使用:
7、宏可以嵌套使用
8、宏的分类
(1)有参宏
#define SUM(a) a+a
SUM(3) 不仅要a+a替换,而且还要把实参3带入到字符串中
(2)无参宏
#define M 10
9、代码:使用有参宏实现判断两个数的大小
四、typedef和宏的区别
typedef int* T ;
#define M int*
T a , b ;
M a1 , b1 ;
a , b都是指针变量
a1是指针变量,b1是整型变量
五、# if — # else 条件编译指令
六、使用条件编译指令调试BUG
七、static和extern修饰关键字
1、static(内部变量)
(1)没加static的代码
(2)加static的代码
(3)static的作用
1)static定义的变量的作用于会得到延长
2)static定义变量的语句只会被执行一次
2、extern:extern是不能修饰局部变量的
3、extern和static的区别
(1)static对全局变量的作用
static修饰的全局变量,表示该全局变量只能在当前文件中使用,而不能在其他文件中使用。
可以在不同的文件中,申明同名的变量。
(2)extern对全局变量的作用
extern修饰的全局变量,表示当前变量可以在本文件中使用,也可以在其他文件中使用。
注意:extern声明的全局变量在不同的文件中不能同名(两个文件需要有包含关系)
—————————————————————————————————————————————————————————————————————————————
一、文件
1、文件操作步骤
(1)引入头文件(stdio.h)
(2)定义文件指针
(3)打开文件
(4)文件读写
(5)关闭文件
2、对于文件的读和写是最常用的文件操作,在C语言中提供了多种文件读写的函数:
(1)字符读写函数:fgetc()和fputc()
(2)字符串读写函数:fgets()和fputs()
(3)数据块读写函数:fread()和fwrite()
(4)格式化读写函数:fscanf()和fprintf()
二、 文件操作函数
1、fopen()
fopen函数用来打开一个文件,其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);
其中:
”文件指针名“必须是被说明为FILE类型的指针变量
”文件名“是被打开文件的文件名
”使用文件方式“是指文件的类型和操作要求
”文件名“是字符串常量或字符串数组
2、fclose()
文件一旦使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误
使用方式:fclose(文件指针);
正常完成关闭文件操作时,fclose()函数返回值为0,如返回非零值则表示有错误发生。
注意:如果文件写操作时,没有进行关闭,可能会导致文件写入失败。
3、文件使用方式及注意事项:
4、字符读写函数:fgetc()和fputc()
字符读写函数时以字符(字节)为单位的读写函数,每次可从文件读出或向文件写入一个字符
fputc函数的功能是把一个字符写入指定的文件中,函数调用形式为:fputc(字符量,文件指针);
5、字符串读写函数:fgets()和fputs()
6、数据块读写函数:fread()和fwrite()
读取数据块函数的一般形式为:fread(buffer,size,count,,fp);
写数据块函数调用的一般形式为:fwrite(buffer,size,count,fp);
其中:
buffer:是一个指针,在函数中,它表示存放输入数据的首地址,如果是写,表示存
size:表示数据块的字节数
count:表示要读写的数据块的快数
fp:表示文件指针
如:
fread(fa,4,5,fp);
其意义就是从fp所指的文件中,每次读4个字节(一个实数)送入数组fa中,连续读5次,即读5个实数到数组中
7、格式化读写函数:fscanf()和fprintf()
8、文件定位
移动文件内部位置指针的函数主要有两个,即rewind()和fseek()
rewind函数前面已多次使用过,其调用形式为:rewind(文件指针)
它的功能是把文件内部的位置指针移到文件首。
下面主要介绍fseek函数,fseek函数用来移动文件内部位置指针,调用形式为:fseek(文件指针,位移量,起始点);
其中:
”文件指针“指向被移动的文件
”位移量“表示移动的字节数,要求位移量是Long型数据,以使在文件长度大于64kb时不会出错。
当用常量表示位移量时,要求加后缀L。
”起始点“表示从何处开始计算位移量,规定的起始点有3种,文件首,当前位置和文件尾。
9、文件判断函数feof()
调用格式:feof(文件指针);
功能:判断文件是否处于文件结束位置,如文件结束,则返回值1,否则为0
注意:feof函数总会多执行一次,也就是说会读取到字符串最后一个字符的下一个字符(是什么谁都不知道)。
所以,feof函数效果不是很好,最好采用EOF,文件结束不会再去多读取一次。