C语言程序设计基础要点

好了,我们现在来复习C语言程序设计,因为是复习,所以我只把一些需要注意的地方列出来。

 

●  

image

● 在C程序中,只有十进制可以是负数,而八进制和十六进制只能是不带符号的整数。

 

● 在C语言中字符串常量都是以字符’\0’作为结束标志的。

 

● C语言的变量名区分大小写。

 

● 带符号整数在内存中是以补码表示的,补码=取反+1.

 

● 大小写字母ASCII码值相差32.

 

● 自左至右的结合方向,称为左结合性;相反,则称为右结合性。如x=y=z,由于=的右结合性,应先执行y=z再执行x =(y=z)运算。

 

● ++i,  先增减后运算,   i++, 先运算后增减。

 

● 数据类型转换关系示意图

image

 

●  逗号表达式,求值过程是从左至右分别求各个表达式的值,并以最后一个表达式的值作为整个逗号表达式的值。

 

● 按位异或:相对应的二进制不同时,结果为1,相同时结果为0.

 

● 字符数据的输入与输出:getchar()    putchar()

 

● printf(“%m.nf\n”)   对于float或double类型的浮点数可以用m.n的形式在指定宽度的同时来指定其精度。其中m用以指定输出数据所占总的宽度,n称为精度。

 

● if与else的配对关系:从最内层开始,else总是与前面最近的并且没有与其他匹配的if相匹配。

 

● continue语句和break语句的区别:continue语句只结束本次循环,而不是终止整个循环语句的执行;break语句则是终止整个循环语句的执行,跳出所在的循环体,转到循环语句外的下一条语句去执行。

 

● *p– 相当于 *(p—)

 

● strlen  返回字符数组的实际长度,不包括’\0’

 

● C语言中规定,以下情况可以省去主调函数中对被调函数的声明:

1.如果被调函数的返回值是整型或字符型时,可以不对被调函数作声明,而直接调用。这时系统将自动对被调函数返回值按整型处理。

2.当被调函数的函数定义出现在主调函数之前时,在主调函数中也可以不对被调函数再作说明而直接调用。

3.如在所有函数定义之前,在函数外预先说明了各个函数的类型,则在以后的各主调函数中,可不再对被调函数作说明。

 

● 函数的指针和指向函数的指针变量:

1.指向函数的指针变量的定义

类型标识符 (*指针变量)();

int (*fp)();                        //fp为指向int函数的指针变量

2.指向函数的指针变量的赋值

指向函数的指针变量=[&]函数名;

3.用函数指针变量调用函数

(*函数指针变量)([实参表]);

4.指向函数的指针变量作函数参数

Sub(f1,f2);            //调用函数Sub(),并将函数f1()和f2()的入口地址作为实参

Sub(int (*x1)(int), int(*x2)(int ,int))

{

      int a,b,i=1,j=2;

      a = (*x1)(i);     //调用f1函数

      b = (*x2)(i,j);

}

 

● extern 只能用来说明外部变量,而不能用来定义变量,他只是说明其后的变量是在程序的其他地方已经定义的外部变量,因此,不能用extern来初始化变量。

extern 类型标识符 函数名(函数参数表);

 

● 宏定义不是C语句,不必在末尾加上分号。若加了分号,则连分号一起替换。

 

● #include “” 和 #include <> 的区别:

使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不是在源文件目录去查找;使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。

 

● struct 结构体名

{

      结构体成员表;

}结构体变量名表={初始化数据};

struct 结构体名 变量名;

 

● 指向结构体变量的指针:

struct 结构体名 *结构体指针变量名;

(*结构体指针变量名).结构体成员名

结构体指针变量名->结构体成员名

 

● void *malloc(unsigned int size);

   void *calloc(unsigned n,unsigned size);

   void free(void *p);

 

● union 共用体名

{

     成员名表;

}共用体变量名表;

union 共用体名 变量名;

1.由于共用体变量中的各个成员公用同一段内存空间,因此在任一时刻,只能有一种类型的数据存放在该变量中,即在任一时刻,只有一个成员的数据有意义。

2.共用体变量的地址和它的各成员的地址都是同一地址。

3.不能对共用体变量名赋值,也不能引用变量名来得到一个值,也不能在定义共用体变量时对它进行初始化。

 

● enmu 枚举标识符{常量列表};

常量值不可重复。

 

● typedef声明新的类型名来代替已有的类型名。

typedef int INTERGER;

typedef struct student

{

 

}student;

student stu;

 

● 文件操作:

文件指针:

FILE *指针变量标识符;

 

文件的打开:

文件指针名 = fopen(文件名,使用文件方式);

 

image

文件的关闭:

fclose(文件指针);

字符输入输出:

fgetc(文件指针)    getc()    fputc(ch,文件指针)     putc()

字符串输入输出:

fputs(字符串,文件指针)

fgets(str,n,fp);       //从fp所指的文件中读取4个字符送入字符数组str中,最后一个字符加上’\0’

数据块输入输出函数:

fread(buffer,size,count,fp);    //从fp所指文件读入count个数据,每个数据占size个字节。

fwrite(buffer,size,count,fp);    //向fp所指文件写入count个数据,每个数据占size个字节。

格式化输入输出函数:

fscanf(文件指针,格式字符串,输入表列);

fprintf(文件指针,格式字符串,输出表列);

文件的定位与随机读写:

rewind(文件指针);       //把文件内部的位置指针移到文件首。

fseek(文件指针,位移量,起始点);   

fseek(fp,100L,0);        //把位置指针移到离文件首100字节处

fseek(fp,-20L,1);        //把当前位置指针向文件首方向移动20字节

fseek(fp,-30L,2);        //把位置指从文件尾向文件头方向移动30字节

文件检测函数:

feof(文件指针);          //判断文件是否结束,文件结束返回1,否则返回0;

ferror(问你件指针);    //检查文件在用各种输入输出函数进行读写是否出错,如返回0,表示未出错,否则出错。

clearerr(文件指针);    //用于清除出错标志和文件结束标志,使他们为0;

本文链接:http://www.alonemonkey.com/c-pro-basic.html