整形 和字符型可以相互赋值 相互输出
TURBO C 把字符型认定为带符号的
实型默认为双精度的
系统默认规定整形数为由符号数
函数都是从右边往左边求值
定义常量 #define
关系表达式 有值 1 真 0 假
实型数 也有0 .0 0.
标记不能
用数字 GOTO
实型数据表现形式有两种
在内存种都是指数形式存放
数组下标只能用常量表达式
静态数组默认赋值为0
非静态 默认赋值为随机
不能省略第二维得长度
字符串数组得名就代表首地址
对于二维数组 光写出行标代表 这一行的首地址
用%S 输出 应该用地址
scanf用%s 输入时候,遇到空格或者回车便认为一个字符串的结束
两个字符串比较不能用大于小于号
strlen测试字符串长度 不含/0
strlwr 大写转换小写 strupr相反
字符串比较 只比较第一个字符得ASCII 如果相同再比较下一个
字符串得比较拷贝 连接都必须用函数
1) 字符类型分类函数:用于对字符按ASCII码分类:字母,数字,控制字符,分隔符,大小写字母等。
2) 转换函数:用于字符或字符串的转换;在字符量和各类数字量(整型,实型等)之间进行转换;在大、小写之间进行转换。
3) 目录路径函数:用于文件目录和路径操作。
4) 诊断函数:用于内部错误检测。
5) 图形函数:用于屏幕管理和各种图形功能。
6) 输入输出函数:用于完成输入输出功能。
7) 接口函数:用于与DOS,BIOS和硬件的接口。
8) 字符串函数:用于字符串操作和处理。
9) 内存管理函数:用于内存管理。
10) 数学函数:用于数学函数计算。
11) 日期和时间函数:用于日期,时间转换操作。
12) 进程控制函数:用于进程管理和控制。
13) 其它函数:用于其它各种功能。
函数不能嵌套定义
函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数。函数还可以自己调用自己,称为递归调用。
一个C源程序必须有,也只能有一个主函数main。
2. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值
RETURN后面可是是个表达式
省略类型说明的函数是INT得
用数组名做实参时候 传送的是地址 型参和实参共享同一个存储单元
型参数组也可以不指定大小 但需要另设一个参数,传递数组元素的个数
在复合语句中定义的变量也是局部变量
全局变量与局部变量共同使用 局部优先
变量默认都是自动变量
变量地址 是一个无符号整形数
指针变量的类型 所指向的内存中存放的数据类型
PRINTF 参数是从右往左计算的
数组地址只能加不能减 P地址能加减 只能用于数组元素的引用 注意下标的有效范围
++运算前面必须是变量 是个赋值过程
整形指
针与字符串指针不同
字符数组后面多余的部分都为ASCII /0
字符数组为一个字节单位
. 成员运算符 优先级最高
结构体数组中每个元素都是结构体类型的数据
文件到程序里面就输入 程序到文件叫输出
a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue; 还应该说明的是枚举元素不是字符常量也不是字符串常量, 使用时不要加单、双引号。
>>应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。
<<高位丢弃,低位补0
typedef定义的一般形式为: typedef 原类型名 新类型名 其中原类型名中含有定义部分,新类型名一般用大写表示, 以便于区别
定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。
3. 宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结 束。如要终止其作用域可使用# undef命令
习惯上宏名用大写字母表示,以便于与变量区别。但也允许用小写字母。
在带参宏定义中,形式参数不分配内存单元,因此不必作类型定义。而宏调用中的实参有具体的值。要用它们去代换形参,因此必须作类型说明。这是与函数中的情况不同的。在函数中,形参和实参是两个不同的量,各有自己的作用域,调用时要把实参值赋予形参,进行“值传递”。而在带参宏中,只是符号代换,不存在值传递的问题。
3. 在宏定义中的形参是标识符,而宏调用中的实参可以是表达式。
在宏定义中,字符串内的形参通常要用括号括起来以避免出错
#include"stdio.h" #include<math.h> 但是这两种形式是有区别的:使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的), 而不在源文件目录去查找; 使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。 用户编程时可根据自己文件所在的目录来选择某一种命令形式。
1. 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
r(read): 读
w(write): 写
a(append): 追加
t(text): 文本文件,可省略不写
b(banary): 二进制文件
+: 读和写
2. 凡用“r”打开一个文件时,该文件必须已经存在, 且只能从该文件读出。
3. 用“w”打开的文件只能向该文件写入。 若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。
4. 若要向一个已存在的文件追加新的信息,只能用“a ”方式打开文件。但此时该文件必须是存在的,否则将会出错。
5. 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。
6. 把一个文本文件读入内存时,要将ASCII码转换成二进制码, 而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。对二进制文件的读写不存在这种转换。
7. 标准输入文件(键盘),标准输出文件(显示器 ),标准出错输出(出错信息)是由系统打开的,可直接使用。文件关闭函数fClose文件一旦使用完毕,应用关闭文件函数把文件关闭, 以避免文件的数据丢失等错误。
getch()
等待 直到输入任意一个值为止
对fgets函数有两点说明:
1. 在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。
2. fgets函数也有返回值,其返回值是字符数组的首地址。
fseek函数用来移动文件内部位置指针,其调用形式为: fseek(文件指针,位移量,起始点); 其中:“文件指针”指向被移动的文件。 “位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。
其表示方法如表10.2。
起始点 表示符号 数字表示
──────────────────────────
文件首 SEEK—SET 0
当前位置 SEEK—CUR 1
文件末尾 SEEK—END 2
文件检测函数
C语言中常用的文件检测函数有以下几个。
一、文件结束检测函数feof函数调用格式: feof(文件指针);
功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0。
二、读写文件出错检测函数ferror函数调用格式: ferror(文件指针);
功能:检查文件在用各种输入输出函数进行读写时是否出错。 如ferror返回值为0表示未出错,否则表示有错。
三、文件出错标志和文件结束标志置0函数clearerr函数调用格式: clearerr(文件指针);
功能:本函数用于清除出错标志和文件结束标志,使它们为0值。
C库文件
C系统提供了丰富的系统文件,称为库文件,C的库文件分为两类,一类是扩展名为".h"的文件,称为头文件, 在前面的包含命令中我们已多次使用过。在".h"文件中包含了常量定义、 类型定义、宏定义、函数原型以及各种编译选择设置等信息。另一类是函数库,包括了各种函数的目标代码,供用户在程序中调用。 通常在程序中调用一个库函数时,要在调用之前包含该函数原型所在的".h" 文件。
在附录中给出了全部库函数。
ALLOC.H 说明内存管理函数(分配、释放等)。
ASSERT.H 定义 assert调试宏。
BIOS.H 说明调用IBM—PC ROM BIOS子程序的各个函数。
CONIO.H 说明调用DOS控制台I/O子程序的各个函数。
CTYPE.H 包含有关字符分类及转换的名类信息(如 isalpha和toascii等)。
DIR.H 包含有关目录和路径的结构、宏定义和函数。
DOS.H 定义和说明MSDOS和8086调用的一些常量和函数。
ERRON.H 定义错误代码的助记符。
FCNTL.H 定义在与open库子程序连接时的符号常量。
FLOAT.H 包含有关浮点运算的一些参数和函数。
GRAPHICS.H 说明有关图形功能的各个函数,图形错误代码的常量定义,正对不同驱动程序的各种颜色值,及函数用到的一些特殊结构。
IO.H 包含低级I/O子程序的结构和说明。
LIMIT.H 包含各环境参数、编译时间限制、数的范围等信息。
MATH.H 说明数学运算函数,还定了 HUGE VAL 宏, 说明了matherr和matherr子程序用到的特殊结构。
MEM.H 说明一些内存操作函数(其中大多数也在STRING.H 中说明)。
PROCESS.H 说明进程管理的各个函数,spawn…和EXEC …函数的结构说明。
SETJMP.H 定义longjmp和setjmp函数用到的jmp buf类型, 说明这两个函数。
SHARE.H 定义文件共享函数的参数。
SIGNAL.H 定义SIG[ZZ(Z] [ZZ)]IGN和SIG[ZZ(Z] [ZZ)]DFL常量,说明rajse和signal两个函数。
STDARG.H 定义读函数参数表的宏。(如vprintf,vscarf函数)。
STDDEF.H 定义一些公共数据类型和宏。
STDIO.H 定义Kernighan和Ritchie在Unix System V 中定义的标准和扩展的类型和宏。还定义标准I/O 预定义流:stdin,stdout和stderr,说明 I/O流子程序。
STDLIB.H 说明一些常用的子程序:转换子程序、搜索/ 排序子程序等。
STRING.H 说明一些串操作和内存操作函数。
SYS/STAT.H 定义在打开和创建文件时用到的一些符号常量。
SYS/TYPES.H 说明ftime函数和timeb结构。
SYS/TIME.H 定义时间的类型time[ZZ(Z] [ZZ)]t。
TIME.H 定义时间转换子程序asctime、localtime和gmtime的结构,ctime、 difftime、 gmtime、 localtime和stime用到的类型,并提供这些函数的原型。
VALUE.H 定义一些重要常量, 包括依赖于机器硬件的和为与Unix System V相兼容而说明的一些常量,包括浮点和双精度值的范围.