初学C语言者宝贝笔记.doc_第1页
初学C语言者宝贝笔记.doc_第2页
初学C语言者宝贝笔记.doc_第3页
初学C语言者宝贝笔记.doc_第4页
初学C语言者宝贝笔记.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言笔记整理1、C语言常用语法提要一、 标示符可由字母、数字和下划线组成。标示符必须以字母或下划线开头。大、小写字母分别认为是两个不同的字符。不同的系统对标示符的字符数由不同的规定,一般允许7个字符。二、 常量1、 整型常量十进制常量八进制常量(以0开头的数字序列)十六进制常量(以0x或0X开头的数字序列)长整型常量(在数字后加字符l或L)2、 字符常量用单引号(撇号)括起来的一个字符,可以使用转义字符。3、 实型常量(浮点型常量)小数形式指数形式4、 字符串常量用双引号括起来的字符序列。三、 表达式1、 算术表达式整型表达式:参加运算的运算量是整型量,结果也是整型量。实型表达式:参加运算的运算量是实型量,运算过程先转换成double型,结果也是double型。2、 逻辑表达式用逻辑运算符连接的整型量,结果为一个整数(0或1)。逻辑表达式可以认为是整型表达式的一种特出形式。3、 字位表达式用位运算符连接的整型量,结果为整数。字位表达式也可以认为是整型表达式的一种特出形式。4、 强制类型转换表达式用“(类型)” 运算符使表达式的类型进行强制转换。如(float)a。5、 逗号表达式(顺序表达式)形式为:表达式1,表达式2,表达式n;顺序求出表达式1,表达式2,表达式n的值。结果为表达式n的值。6、 赋值表达式将赋值号“=”右侧表达式的值赋给赋值号左边的变量。赋值表达式的值为执行赋值后被赋值的变量的值。7、 条件表达式形式为:逻辑表达式?表达式1:表达式2逻辑表达式的值为非0,则条件表达式的值等于表达式1的值;逻辑表达式的值为0,则条件表达式的值等于表达式2的值。8、 指针表达式对指针类型的数据进行运算。例如:p-2、p1-p2、&a等(其中p、p1、p2均已定义为指针变量),结果为指针类型。以上各种表达式可以包含有关的运算符,也可以不包含任何运算符的初等量(例如,常量是算术表达式的最简单的形式)。四、 数据定义对程序中用到的所有变量都需要定义。对数据要定义其数据类型,需要是指定其存储类别。1、 类型表示符可用intshortlongunsignedcharfloatdoublestruct 结构体名union 共用体名用typdef定义的类型名若省略数据类型,则按int处理。结构体与共用体的定义形式为:struct 结构体名成员表列;union 共用体名成员表列;用typdef定义的新类型名的形式为:typdef 已有类型 新定义类型如:typdef int count;2、 存储类别可用autostaticregisterextern如不指定存储类别,作auto处理。变量的定义形式为:存储类别 数据类型 变量表列注意外部数据定义只能用extern或static,而不能用auto或register。五、 函数定义形式为:存储类别 数据类型 函数名(形参表列)函数体函数的存储类别只能用extern或static。函数体使用花括号括起来,可包括数据定义和语句。例如:static int max(int x,int y)int z;z=xy?x:y;return(z);六、 变量的初始化可以在定义时对变量或数组指定初始值。静态变量或外不变量如未初始化,系统自动使其初值为0(对数值型变量)或空(对字符型数据)。对自动变量或寄存器变量,如未初始化,则其初始值为一不可预测的数据。七、 语句1、 表达式语句2、 函数调用语句3、 控制语句4、 复合语句5、 空语句其中控制语句包括1、 if(表达式) 语句或if(表达式) 语句1else 语句22、 while(表达式) 语句3、 do 语句while(表达式)4、 for(表达式1, 表达式2, 表达式3) 语句5、 switch(表达式)case 常量表达式1:语句1; case 常量表达式2:语句2;.case 常量表达式n:语句n;default: 语句n+1;6、 break7、 continue8、 return9、 goto 语句八、 预处理命令#define 宏名 字符串#define 宏名(参数1, 参数2,参数n)字符串#undef 宏名#include 文件名或#if 常量表达式#ifdef 宏名#ifndef 宏名#else#endif2、C语言关键字Auto 自动变量Break跳出循环Case 与Switch配套时用Char 字符ConstContinue 结束循环Default与Switch配套时用Do 循环Double 双精度Else 与if配对时用Enum 枚举类型Extern 声明外部变量Float单精度For循环Goto 转向语句If 条件语句Int整型Long 长Register 寄存器变量Return 返回Short短Signed 符号Sizeof 长度运算符Static 静态局部变量Struct 结构体Switch 选择语句Typedef将老类型定义为新类型Union共用体Unsigned 无符号Void 空VolatileWhile 循环3、运算符和结合性优先级运算符含义要求运算对象的个数结合方向1( )圆括号 自左至右 下标运算符- 指向结构体成员运算符. 结构体成员运算符2!逻辑非单目运算符自右至左 按位取反+ 自增- 自减- 负号(类型)类型转换*指针&地址sizeof长度3*乘双目运算符自左至右/ 除%求余4+加双目运算符自左至右-减5右移6,=关系运算符双目运算符自左至右7=等于双目运算符自左至右!=不等于8&按位与双目运算符自左至右9按位异或双目运算符自左至右10|按位或双目运算符自左至右11&逻辑与双目运算符自左至右12|逻辑或双目运算符自左至右13?:条件三目运算符自右至左14=,+=,-= *=,/=,%= =,.)单目运算符算术运算符(先乘除,后加减)关系运算符逻辑运算符(不含!)条件运算符赋值运算符逗号运算符4.1、C库函数之数学函数使用数学函数时,应该在该源文件中使用以下命令行:#include或#includemath.h函数名原型功能返回值说明absint abs(int x);求整数x的绝对值计算结果acosdouble acos(double x);计算cos-1 (x)的值计算结果-1x1asindouble asin(double x);计算sin-1(x)的值计算结果-1x1atandouble atan(double x);计算tan-1 (x)的值计算结果atan2double atan2(double x,double y);计算tan-1 (x/y)的值计算结果cosdouble cos(double x);计算cos (x)的值计算结果 x的单位为弧度coshdouble cosh(double x);计算x的双曲余弦函数cosh (x)的值计算结果expdouble exp(double x);求ex的值计算结果 fabsdouble fabs(double x);求x的绝对值计算结果 Floordouble floor(double x);求出不大于的x最大数该整数的双精度实数 fmoddouble fmod(double x,double y);求整除x/y的余数返回余数的双精度实数 Frexpdouble frexp(double x,int *eptr);把双精度数val分解为数字部分(尾数)x和以z为底的指数n即val=x*zn,n存放在eptr指向的变量返回数字部分x0.5x=0 tandouble tan(double x);计算tan (x)的值计算结果x的单位为弧度 tanhdouble tanh(double x);计算x的双曲正切函数tanh(x)的值计算结果 4.2、C库函数之字符函数和字符串函数使用字符函数时,要包含头文件”ctype.h” 使用字符串函数时,要包含头文件”string.h”函数名原型功能返回值Isalnumint isalnum(int ch);检查ch是否是字母(alpha)或数字(numeric)字母或数字返回1否则返回0Isalphaint isalpha(int ch);检查ch是否是字母是返回1否返回0iscntrlint iscntrl(int ch);检查ch是否是控制字符(其ASCII码在00x1F之间)是返回1否返回0isdigitint isdigit(int ch);检查ch是否数字(09)是返回1否返回0isgraphint isgraph(int ch);检查ch是否是打印字符(其ASCII码在0x210x7F之间)不包括空格是返回1否返回0islowerint islower(int ch);检查ch是否小写字母是返回1否返回0isprintint isprint(int ch);检查ch是否是打印字符(其ASCII码在0x200x7F之间)包括空格是返回1否返回0ispunctint ispunct(int ch);检查ch是否是标点字符(即除字母、数字、空格以外的所有可打印字符)是返回1否返回0isspaceint isspace(int ch);检查ch是否是空格、跳格符(制表符)或换行符是返回1否返回0isupperint isupper(int ch);检查ch是否大写字母是返回1否返回0isxdigitint isxdigit(int ch);检查ch是否一个16进制数字字符(09、af、AF)是返回1否返回0strcatchar *strcat(char *str1,char *str2);把字符串str1接到str2后面(str1后面的0被取消)返回str1strchrchar *strchr(char *str, int ch);str;找出str指向的字符串中第一次出现字符ch的位置返回指向该位置的指针,如找不到返回空指针strcmpchar *strcmp(char *str1,char *str2);比较两个字符串str1、str2str1str2返回负数strcpychar *strcpy(char *str1,char *str2);把str2指向的字符串拷贝到str1中去返回str1strlenunsigned int strlen(char *str);统计str字符串中字符的个数(不包括终止符0)返回字符串个数strstrchar *strstr(char *str1,char *str2);找出str2字符串在str1字符串中第一次出现的位置(不包括str2得串结束符)返回指向该位置的指针,如找不到返回空指针tolowerint tolower(int ch);ch字母转换为小写字母与ch相应的小写字母toupperint toupper(int ch);ch字母转换为大写字母与ch相应的大写字母4.3、C库函数之输入输出函数要包含头文件”stdio.h”函数名原型功能返回值说明clearervoid clearer(FILE *fp);清除文件指针错误指示器无 closeint close(int fp);关闭文件成功返回0,否则返回-1非ANSI标准函数creatint creat(char*filename,int mode);以mode所制定的方式建立文件成功返回正数,否则返回-1非ANSI标准函数eofint eof(int fp);检查文件是否结束文件结束返回1,否则返回0非ANSI标准函数fcloseint fclose(FILE *fp);fp关闭所指的文件释放文件缓冲区有错返回非0,否则返回0 feofint feof(FILE *fp);检查文件是否结束文件结束返回非0,否则返回0 fgetcint fgetc(FILE *fp);从fp所指定的文件中取得下一个字符返回所得到的字符,出错返回EOF fgetsint fgets(char *buf,int n,FILE *fp);从fp所指向的文件读取一个长度为(n-1)的字符串,存入起始地址为buf的空间返回地址buf,遇文件结束或出错返回NULL fopenFILE *fopen(char*filename,char *mode);以mode指定的方式打开名为filename的文件成功,返回一个文件指针(文件信息区的起始地址),否则返回0fprintint fprint(FILE *fp,char *format,args,);把args的值以format指定的格式输出到fp所制定的文件中实际输出的字符数 fputcint fputc(char ch,FILE *fp);将字符ch输出到fp指向的文件中成功返回该字符,否则返回非0 fputsint fputs(char *str,FILE *fp);将str指向字符串输出到fp指向的文件中返回0,出错返回非0 freadint fread(char *pt,unsigned size,unsigned n,FILE *fp);从fp所指向的文件中读取长度为size的n个数据项,存到pt所指向的内存区返回所读的数据项个数,遇文件结束或出返回0 fscanfint fscanf(FILE *fp,char format,args,);从fp所指向的文件中按format给定的格式输入的数据送到args所指向的内存单元(args是指针)已输入的数据项个数 fseekint fseek(FILE *fp,long offset,int base);将fp所指向的文件的位置指针移到以base 所指出的位置为基准、以offset为移量的位置返回当前位置,否则返回-1 ftellint ftell(FILE *fp);返回fp所指向的文件中读写位置的返回fp所指向的文件中读写位置的 fwriteint fwrite(char ptr,unsigned size,unsigned n,FILE *fp);把ptr所指向的n* size个字节输出到fp所指向的文件写到fp文件中的数据项个数 getcint getc(FILE *fp);从fp所指定的文件中读出一个字符返回所读的字符,出错返回EOF getcharint getchar (void);从标准输入设备读取下一个字符返回所读的字符,出错返回-1 getwint getw(FILE *fp);从fp所指定的文件读取一个字(整数)输入的整数,出错返回-1非ANSI标准函数openint open(char *filename,int mode);以mode指定的方式打开名为filename的文件返回文件号(正数),出错返回-1 printfint printf(char *format,args,);按format指向的格式字符串所规定的格式,将输出表列args的值输出到标准输出设备输出字符的个数,出错返回-1format可以是一个字符串,或字符串数组的起始地址putcint putc(int ch,FILE *fp);将字符ch输出到fp指向的文件中输出的字符ch,出错返回EOF putcharint putchar(char ch);将字符ch输出到标准输出设备输出的字符ch,出错返回EOF putsint puts(chae *str);将str所指向字符串输出到标准输出设备,将0转换为回车换行返回换行符,出错返回EOF putwint putw(int w,FILE *fp);将一个整数(w)即一个字写到fp指向的文件中输出的整数,出错返回EOF非ANSI标准函数readint read(int fd,char *but,unsigned count);从文件号fd所指示的文件中读count个字节到but指示的缓冲区返回真正读入的字节个数,文件结束返回0,出错返回-1非ANSI标准函数renameint rename(char *oldname,char *newname);指由oldname所指定的文件名改为由newname所指的文件名成功返回0,出错返回-1 rewindvoid rewind(FILE *fp);将fp指示的文件位置指针置于文件开头位置,并清除文件结束标志或出错标志无 scanfint scanf(char format,args,);从标准输入设备按format指向的格式字符串所规定的格式,输入数据给args所指向的单元读入并赋给args的数据个数,文件结束返回EOF,出错返回0args为指针writeint write(int fd,char *but,unsigned count);从but指示的缓冲区输入count个字符到fd所标志的文件返回实际输出的字节数出错返回-1非ANSI标准函数4.4、C库函数之动态存储分配函数函数名原型功能返回值callocvoid *calloc(unsigned n,unsigned size);分配几个数据项的内存连续空间,每个数据项 的大小为size分配内存单元的起始地址。如不成功返回0freevoid free(void *p);释放p所指的内存区无mallocvoid *malloc(unsigned size);分配size字节的存储区所分配的内存区地址,如内存不够返回0reallocvoid *realloc(void *p,unsigned size);将p所指的已分配内存区的大小该为size。size可以比原来分配的空间大或小返回指向该内存区的指针说明:ANSI标准建议在“stdlib.h”头文件包含上述信息,但许多C编译要求用“malloc.h”头文件。ANSI标准要求动态分配系统返回void指针,但有些C编译提供的这类函数返回char指针。无论哪一种,都要用强制类型转换方法把void或char指针转换成所需类型。5、顺序程序设计一、 字符的输入输出1、 putchar函数(单字符输出函数)一般形式为putchar(c); 2、 getchar函数(单字符输入函数)一般形式为getchar ();二、 格式输入与输出1、 printf函数(格式输出函数)一般形式为printf(格式控制,输出表列)说明:“格式控制”是用双引号括起来的字符串,包括格式说明和普通字符,“格式控制”由“%”和格式字符组成。“输出表列”是需要输出的一些数据,可以是表达式。可写成下列格式printf(参数1,参数2,参数3参数n);printf函数的功能是将参数2参数n按参数1给定的格式输出。格式字符:d,i 以带符号的十进制形式输出整数(正数不带符号);o 以八进制无符号的形式输出整数(不输出前导符号0);x,X 以十进制无符号的形式输出整数(不输出前导符号0x),用X则输出; u 以无符号的十进制形式输出整数;c 以字符形式输出,只输出一个字符;s 输出字符串;f 以小数输出单、双精度数,隐含输出六位小数;e,E 以指数形式输出实数。用E则输出时指数用E表示;g,G 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0,用G时,若以指数形式输出时指数用E表示。在格式说明中,在%和上述格式字符间可以插入以下修饰符l 用于长整型,可加在格式符d、o、x、u前面m 代表一个整数,数据的最小宽度n 代表一个整数,对实数,表时输出几位小数;对字符串,表示截取的字符个数。- 输出的字符或数字在域内向左靠2、 scanf函数(格式输入函数)一般形式为scanf (格式控制,地址表列)格式字符:d,i 用来输入有符号的十进制整数u 用来输入无符号的十进制整数o 用来输入无符号的八进制整数x,X 用来输入无符号的十六进制整数(大小写相同)c 用来输入单个字符s 用来输入字符串,输入时仪非空白字符开始,以第一个空白字符结束。f 用来输入实数,可以用小数形式或指数形式输入e,E,g,G 与f作用相同,e与f,g可以互相替换修饰符l 用于输入长整型(可用%ld,%lo,%lx)以及double型数据(用%lf,%le)h 用于输入短整型(可用%hd,%ho,%hx)域宽 指定输入数据所占的宽度(列数),域宽为正整数* 表示本输入项在读入后不赋给相应的变量说明:对unsigned型变量所需的数据,可以用%u,%d或%x格式输入。可以指定输入数据所占的列数系统,自动按它截取所需数据。如 scanf(%3d %3d,&a,&b);输入 123456系统自动将123赋给a,456赋给b。如果在%后有一个“*”附加说明符,表示跳过它指定的列数。如 scanf(%2d %*3d %2d,&a,&b);输入 12 345 67将12赋给a,跳过345,将67赋给b输入数据不能规定精度。注意问题:scanf函数中的“格式控制”后面应当是变量地址,不是变量名。如果在“格式控制”字符串中除了格式说明以外,还有其它字符,则在输入数据时应输入与这些字符相同的字符。用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。在输入数据时,遇以下情况时该数据认为结束: 遇空格,或按“回车”或“跳格”(Tab)键。 按指定宽度结束。 遇非法输入。6、选择结构程序设计一、 关系运算符和关系表达式1、 关系运算符 小于 大于= 大于或等于= 等于!= 不等于说明:前四种关系运算符的优先级别相同,后两种也相同。前四种高于后两种。关系运算符的优先级别低于算术运算符。关系运算符的优先级别高于赋值运算符。2、 关系表达式的值是一个逻辑值,即“真”或“假”。以“1”代表“真”,以“0”代表“假”。二、 逻辑运算符和逻辑表达式1、 逻辑运算符& 与两者均为真时为真| 或两者有一为真时为真! 非真时为假说明:“!”的优先级高于算术运算符。“&”和“|” 低于关系运算符,高于赋值运算符。2、 逻辑表达式的值也是一个逻辑值,“非0”代表“真” ,以“0”代表“假”。三、 if语句1、 if语句的三种形式if(表达式) 语句if(表达式) 语句1 else 语句2;if(表达式1) 语句1;else if(表达式2) 语句2;.else if(表达式n-1) 语句n-1;else 语句n; 说明:第二、三中形式的if语句中,在每个else前面有一分号,整个语句结束时有一个分号;在if和else后面如果有多个操作语句,应用花括号“”将几个语句括起来成一个复合语句。2、 if语句的嵌套嵌套时可以加花括号“”来确定配对关系。3、 条件运算符唯一的三目(元)运算符,一般形式为:表达式1?表达式2:表达式3;例:max=ab?a:b;printf(d%, ab?a:b);说明:条件运算符的表达式1为非0,输出表达式2的值;表达式1为0,输出表达式3的值。条件运算符的优先级高于赋值运算符。条件运算符的结合方式“自右至左”。例如:ab?a:cd?c:d;相当于 ab?a:(cd?c:d);表达式1的类型可以与表达式2和表达式3的类型不同。四、 switch语句一般形式:switch(表达式)case 常量表达式1:语句1case 常量表达式2:语句2.case 常量表达式n:语句ndefault:语句n+1;说明:执行完一个case后面的语句后,流程不能自动跳出switch结构,因此必须用break语句跳出结构;在case后如有多个语句,可以不加花括号;多个case可以共用一组执行语句。如:.case A:case B:case C: printf(60 n);break;.当值为A,B,C时都执行同一组语句。7、循环控制一、 goto语句无条件转向语句,一般形式为:goto 语句标号;语句标号用标示符表示。1、 与if语句一起构成循环结构;2、 从循环体中跳转到循环体外(从多层循环的内层循环直接跳到外层循环才用)。二、 while语句用来实现“当型”循环结构,一般形式为:while(表达式)循环体语句;当表达式为非0值(真)时,执行while语句中的内嵌语句,特点是:先判断表达式,后执行语句。三、 do-while语句也是“当型”循环结构,一般形式为:do循环体语句while(表达式);当表达式为非0值(真)时,返回重新执行循环体,为0结束。特点是:先执行循环体,然后判断循环条件是否成立。四、 for语句for(表达式1;表达式2;表达式3)语句;最简单的应用形式:for(循环变量符初值;循环条件;循环变量增值) 语句说明:1、 表达式1可以省略,但其后的分号不能省略。此时应在for语句之前给循环变量符初值;2、 表达式2也可以省略;3、 表达式1和表达式3可同时省略;4、 3个表达式可同时省略;5、 表达式1和表达式3可以是与循环变量无关的其它表达式。还可以是逗号表达式,其值为最右边表达式的值。6、 表达式一般是关系表达式(如I=100)或是逻辑表达式(如ab&xy),也可以是数值表达式或字符表达式。五、 break语句作为跳出switch结构或循环体。一般形式为:break;六、 continue语句作为结速本次循环,即跳出循环体下面尚未执行的语句,接着进行下一次是否执行循环的判定。一般形式为:continue;8、预处理命令一、 宏定义1、 不带参数的宏定义一般形式为:#define 标示符 字符串它的作用是用标示符代替字符串。说明:宏名一般习惯用大写字母,以便与变量名区别;行末不加分号;#define命令出现在程序函数的外面,有效范围为定义命令之后到本源文件结束;在进行宏定义时,可以引用已定义的宏名,可以层层置换。2、 终止宏定义一般形式为:#undef 标示符使标示符的作用范围在#undef行处终止。3、 带参数的宏定义不是简单的字符串替换,还要进行参数替换。定义的一般形式为:#define 宏名(参数表) 宏体例如: #difine s(a,b) a*barea=s(3,2)展开为 area=3*2;注宏体中与参数名相同的字符序列适当地加上圆括号;参数表左扩号与宏名间不得有空格。二、 “文件包含”处理一般形式为:#include ”文件名”或 #include 注意:如果调用库函数,常用尖扩号;如果是自己的文件,常用双引号。三、 条件编译1、 #ifdef 标示符程序段1#else 程序段2#end if它的作用是若表示符已经被#define命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。也可以没有#else部分,即#ifdef 标示符程序段1#end if2、 #ifndef 标示符程序段1#else 程序段2#end if它的作用是若表示符未被定义过,编译程序段1,否则编译程序段2。也可以没有#else部分,即#ifndef 标示符程序段1#end if3、 #if 表达式程序段1#else 程序段2#end if它的作用是当指定的表达式值为真(非0)时,编译程序段1,否则编译程序段2。9、函数一、 函数定义的一般形式1、 无参函数的定义形式类型标示符 函数名()声明部分语句;2、 有参函数的定义形式类型标示符 函数名(形参表列)声明部分语句;3、 空函数类型标示符 函数名();4、 对形参的声明的传统方式老版本C语言中,对形参类型的声明是放在函数定义的第二行,也就是不在第一行的括号内指定形参的类型,而在括号外单独指定。二、 函数的返回值1、 函数的返回值是通过函数的return语句获得的。一般形式:return 返回值;return后面的值可以是一个变量,也可以是一个表达式。2、 应当在定义函数时指定函数的类型类型标示符 函数名(形参表列)类型标示符即维返回值的类型。3、 如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。4、 为了明确表示“不带回值”,可以用void定义“无类型”(或称“空类型”)。三、 函数的调用1、 一般形式函数名(实参表列);2、 函数调用的方式函数语句把函数调用作为一个语句:例 printstar();函数表达式函数出现在一个表达式中,这种表达式称为函数表达式。例: c=2*max(a,b)函数参数函数调用作为一个函数的参数,例: m=max(a,max(b,c)其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。3、 对被调用函数的声明在主调函数体内对被调函数声明的一般形式为:函数类型 函数名(参数类型1,参数类型2,)函数类型 函数名(参数类型1 参数名,参数类型2参数名,)注意:如果被调函数出现在主调函数前,可以不必声明。如果已在所有函数定义之前,在函数外部已作了函数声明,则在各个主调函数不必对所调用的函数再作声明。四、 变量的存储类别1、 auto变量函数中的局部变量,如不专门声明为static存储类别的,函数中的形参和在函数中定义的变量,均属此类,又称自动变量。auto可以省略。2、 用static声明局部变量用static声明的局部变量是静态局部变量,一般形式为:static 类型 变量名对静态变量是在编译时赋初值的,即只赋初值一次,以后每次调用函数时,不能重新赋值。其他函数不能引用。3、 register变量(寄存器变量)对一些使用频繁的变量可定义为register变量,以提高运行效率。说明:只有局部自动变量和形式参数可以作为寄存器变量。4、 用extern声明外部变量在一个文件内声明外部变量如果在一个变量的定义点之前的函数要引用这个变量,则应该在引用之前用关键字extern对该变量作外部变量声明。有了此声明,就可以从声明处起,合法的使用该外部变量。一般形式为:extern 变量名该变量名已在文件内被定义为全局变量。在多个文件的程序中声明外部变量在任一个文件中定义外部变量Num,而在另一文件中用extern对Num作外部变量声明,在编译和连接时,就将在另一文件中定义的外部变量的作用域扩展到本文件,在本文件中可以合法的引用外部变量Num。5、 用static声明外部变量(静态外部变量)在程序设计中,希望某些外部变量只限于被本文件引用,而不能被其他文件引用,这是可以在定义外部变量时加一个static声明。五、 内部函数和外部函数1、 内部函数如果一个函数只能被本文件中其他函数调用,它称为内部函数,一般形式为:static 类型标示符 函数名(形参表)2、 外部函数在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用(extern可省略)。在需要调用此函数的文件中,用extern声明所用的函数是外部函数(extern可省略,直接用函数原型)。说明:#include命令所指定的“头文件”中的函数可直接调用,不用声明。10、数组一、 一维数组的定义和引用1、 定义类型说明符 数组名常量表达式;常量表达式表示数组元素的个数,即数组长度。而下标从0开始,因此最大下标为常量表达式-1。例:定义数组 aN数组元素为: a0,a1,aN-12、 引用数组名下标下标可以是整型常量或整型表达式。3、 初始化在定义数组时对数组元素赋以初值;可以只给一部分元素赋值;在对全部数组元素赋初值时,可以不指定长度。二、 二维数组1、 定义类型说明符 数组名常量表达式常量表达式;2、 引用数组名下标下标3、 初始化分行给二维数组赋初值int a3,4=1,2,3,4,5,6,7,8,9,10,11,12;将所有数据写在一个花括号里int a3,4=1,2,3,4,5,6,7,8,9,10,11,12;对部分元素赋初值int a3,4=1,5,9;int a3,4=1,0,6,0,0,11;int a3,4=1,5,6;int a3,4=1,9;如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。三、 字符数组1、 定义char 数组名常量表达式;2、 初始化char c10= I, , a, m, , h, a, p, p, y;char c=I, , a, m, , h, a, p, p, y;char c=I am happy;char c=I am happy;3、 字符数组的输入输出逐个字符输入输出,用格式符%c。整个字符串一次输入或输出,用格式符%s。注意:用%s格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。用%s格式符输入字符串时,scanf函数中的输入项是字符数组名,输入项为字符数组名时,不要再加地址符&。4、 字符串处理函数puts(字符数组)将一个字符串输出到终端。gets(字符数组)从终端输入一个字符串到字符数组。strcat(字符数组1,字符数组2)连接两个字符数组的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值,字符数组1的地址。strcpy(字符数组1,字符串2)将字符串2复制到字符数组1中。字符串2可以是字符数组名,也可以是一个字符串常量。说明:此函数可以将字符串2中前面若干个字符复制到字符数组1中。形式为:strcpy(字符数组1,字符串2,N) N为要复制字符的个数strcmp(字符串1,字符串2)它的作用是比较字符串1和字符串2,比较结果有函数值带回。如果字符串1=字符串2,函数值为0;如果字符串1字符串2,函数值为一正整数;如果字符串1字符串2,函数值为一负整数。strlen(字符数组)测试字符串长度。strlwr(字符串)将字符串中大写字母换成小写字母。strupr(字符串)将字符串中小写字母换成大写字母。sprintf(,)将参数表中所提供的各个表达式的值,按中所指定的格式,复制到由所指定的字符数组中。5、 在C+中strcat函数可写成strcat(字符数组1, 字符数组2,N) N为要连接字符的个数strcmp函数可写成strcmp(字符串1,字符串2,N) N为要比较字符的个数11、共用体、枚举类型、用typedef定义型一、 共用体定义union 共用体名成员表列;变量表列;例如1、union dataint I;char ch;float f;union data a,b,c;2、union dataint I;char ch;float f;a,b,c;3、unionint I;char ch;float f;a,b,c;二、 枚举类型enum 枚举类型名枚举常量表列;例 enum weekdaysum,mon,tue,wed,thu,fri,sat;三、 用typedef定义型typedef 原类型名 新类型名;例 typedef int INTEGER;12、结构体一、声明一个结构体类型的一般形式:struct 结构体名成员列表;声明结构体时,对各成员都应进行类型声明,即类型名 成员名例:struct student int num;char name20;char sex;int age;float scory;char addr30;一般将结构体类型声明集中放到一个头文件里(.h),哪个源文件需用此结构体类型,可用#include命令将该头文件包含到本文件中。二、定义结构体类型变量的方法:1、 先声明结构体类型再定义变量当已定义了一个结构体类型,可以用它来定义变量。结构体类型名 结构体变量名;如 struct student student1,student2;2、 在声明结构体类型的同时定义变量当已定义了一个结构体类型,可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论