1、标识符分为三类:关键字、预定义标识符、用户标识符。关键字在C语言中有特殊作用,所以像int、print等都不可用作他用。预定义标识符是预先定义并具有特殊含义的标识符,不可以用作它用,比如include,define。用户标识符是用户自定义的标识符,它的命名规则和关键字相同,即由字母、数字、下划线组成,但第一个字必须是字母或者下划线。此外,C语言是大小写敏感性的语言,If是可以当作用户自定义的标识符,但一般不会有人这么干。同时,大小写敏感的语言还有JAVA,C#,RUBY,XML,C++,大小写不敏感的语言有Fortran,BASIC,SQL,Pascal。
2、实型数据的标准格式是:小数形式+整数形式。比如:2.332e-1就是一个合法的实型数据。代表2.332*10-1。e前e后必有数,e后必须是整数。
3、每个字符串都有一个结束字符。所以一个“1”字符占两个字节。‘0’的ASCII数值是48,‘a’的ASCII数值是97,‘A’的ASCII数值是65。字符是可以算术运算的,而且大小写字符的转换是利用32这个值。
4、所有的ASCII都可以用“”加数字来表示,一般数字是八进制的,当然也有十六进制的。如“x6d”是十六进制的,“141”是八进制的。0一般是不写的。
5、算术运算符总共有五种:+,-,*,/,%。算术运算要丢掉小数的情况有三种:int a=4.2; (int)a; 4/3;
6、赋值运算符:只有一个“=”号,a=3, a++是先用后加(此值为3),++a值为(4)。此外常量不可以赋值。
7、位运算提供六种运算:按位求反~,按位左移<<,按位右移>>,按位与&,按位|,按位异或^。按位异或是”相同取0,不同取1“。位运算的宗旨就是先把十进制的转化为二进制的,然后把二进制的再转化为十进制的。在位数不变的情况下,左移一位表示乘以2,右移一位表示除以2。
8、输出函数中,对应的类型有整型(%d),长整型(%ld)、字符型(%c),八进制数无符号整型(%o),十六进制数无符号整型(%x),字符串型(%s),无符号整型(%u),单精度实型(%f),指数型(%e)。百分号和字母之间加数字可以表示输出空格。
9、输入输出函数除了printf();和scanf();以外,还有他们的简略版本,也在stdio.h类库中,是putchar();和getchar();,他们代表输出输入一个字符。例如a=getchar();代表从控制台输入一个字符。
10、两个数交换顺序一般采用第三个参数来实现:t=x; x=y; y=t。
11、实现保留三位小数有一个技巧:float a=123.45678; float b=((int)(a*1000+0.5))/1000.0; 。
12、C语言中的非零表示逻辑真,零表示逻辑假。关系运算符有>,>=,<,<=,==,!=,前四种的优先级要大于后两种。关系运算符表示真时为1,表示假为0。4<5为真,表示1。逻辑运算只是表示真与假(0或1),不能有其它值。优先级是!,&&,||,需要注意的是只要一个是真的,“或”就为真,只要一个是假的,“与”就为假。条件运算符是唯一的三目运算符,表达式1?表达式2:表达式3;。switch语句中只能用break,不可以用continue,而且switch后面只能是整型常量、字符型常量、枚举型数据,case后面只能是常量,不可以是变量。
13、循环语句有三种:for(),while(),do-while();,切记do-while();后面的分号不可以丢掉。嵌套循环一般用来处理二维数组。
14、有关函数的几个要点:函数构成是函数类型、函数名、参数类型和形参。函数默认是int类型,函数不能嵌套定义,先声明后调用再定义。函数的return返回值在一个函数中只有一个。以#开头的是预编译行,不是c语句,不加分号,不占运行时间。实参向形参传递参数。另外注意,“传值”和“传址”的不同,前者的形参的变化不会改变实参的值,后者形参的改变会改变实参的值。函数的递归调用就是直接或间接地调用自己。掌握几个特殊的函数:sqrt();是算数平方根函数,pow(a,b);是幂函数。
15、指针变量是用来存储地址的,一般变量是用来存储值的,地址便是指针。指针可以指向任何数据类型,但不论指向的数据类型占多少个字节,一个指针变量占用四个字节。还可以有指向指针变量的指针**p;。指针变量在使用前必须初始化,即把一个具体的地址赋给它,如果不指向任何数据类型就赋一个NULL。指针初始化一般有两种:int a=3; *p=&a; 或者int a=3, *p; p=&a; 。(*p)++的值会变化,*p++的地址会变化。数组名是指数组的第一个元素的地址,不可以自加。函数名是函数的入口地址,字符串常量名是字符串的首字符地址。
16、数组初始化便是赋值(加大括号),初始化的数组元素默认值是0,未初始化的数组元素的默认值是一个随机数。数组的第一位可以不写,但其它维必须写。如a[][3]={4,5,6}合法,但a[3][]={3,5,6}不合法。对于二维数组a[2][3],a[0]叫首行地址,*(a[0]+1)是首行向后跳一列,即a[0][1]。元素形式的转化法则:脱衣服法则。如a[2]=*(a+2),a[2][2]=*(a+2)[2]=*(*(a+2)+2)。这个思想很重要。
17、字符串常量用双引号括起来,系统自动在其尾部加一个空值‘ ’。C语言没有字符串变量,所以只能用字符数组来存放字符串,一般为了存放最后一个零,字符数组要比字符串多一位。字符串赋值也是有两种方式:char a[]=”Hello World!”; 或者char *p;p=”Hello World!”;字符串的输入输出可以有三种方式:scanf函数和printf函数,此时需要scanf(“%s”,str);。专门处理字符串的两个函数gets();和puts();,gets();函数最后需要赋一个’ ’,puts();函数最后会换行。还可以逐个地输入输出字符串的每个字符。 重点是,scanf函数接收到了空格输入就结束,而gets并不会有这个问题。此外字符串长度要少于字符数组长度。几个常用的字符串函数有:strcpy();拷贝函数,strlen();求长度函数,strcmp();字符串比较函数。使用他们的时候要在预定义的头部加入“string.h”。C语言中只有字符串常量,没有字符串变量,如果要比较两个字符串常量的大小不能直接用关系运算,得使用字符串比较函数。
18、文件类型指针是一个指向结构体类型的指针,格式是FILE *指针变量名。文件有文本文件和二进制文件,文本文件是存储ASCII字符,二进制文件是存储二进制。例如100,文本文件存储‘1’,‘0’,‘0’的ASCII(三个八位二进制),而二进制文件存储100的二进制01100100。打开文件用: FILE *fp; fp=fopen(“c:\Lab.c”,”rb”);。文件由数据流组成。
19、转义字符: 是水平制表, 是回车换行,是退到前一列,f是将当前位置移至下一页开头,v是垂直制表, 是移至行开头。