其他级面试题笔试复习总结_第1页
其他级面试题笔试复习总结_第2页
其他级面试题笔试复习总结_第3页
其他级面试题笔试复习总结_第4页
其他级面试题笔试复习总结_第5页
已阅读5页,还剩498页未读 继续免费阅读

下载本文档

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

文档简介

总复习学习资料汇第一部分:C语言部分总复C语言知识点总main2、C3、C4C7、常量:程序运行过不改变的量。(整形常量、实型常量、字符常量、字符串常 8、变量:程序运行过程可改变的量。变量名遵守标识符命名规则,变量必须先定义后9、位Bit,字 制;二进制到八进制、十六进制842111、整形常量:十进制整形常量:0~9八进制整型常量:0~7以数字0开头 形常量:0~9,A~F或a~f 以数字0x或0X开头 12、内存中的形式:有符号正整数:原码存放,最为符号位;负整数:补码存放,最为符号位;无符号正整数:最不是符号位。13、补码的求法:1.求正整数对应的原码2.原码求反3.114、补码求负整数:1.各位求反2.结果加1 3.所得二进制转化为十进制4.加负号。unsignedlong17、实型变量:float、double优先级:()> 赋值号左边变量被赋值后的值;3.赋值号的结合顺序为从右到左;4.不同于数学上的等号5.20、复合赋值表达式:+=、—=、*=21、强制类型转换:(类型名)表达式例 转化后为整型值2242526、C27、注释:注释可以加在程序的任何位置说法不对,例:int/*…*/ 28、字符常量:1.ASCII;2.29、字符变量:char变量名;字符型数据可以参与任何整数运算,表示的就是与之相对应ASCII‘A’ASCII65‘a‘ASCII97,对应的大小写字32。 其中~为单目运算符结合性自右向左,其余为双目运整数左端补0,负整数左端补1(移动是其对应的补码的移动);按位与、按位异或、按位或3种运算符满换律;位数不同的运算数运算规则:1.右端对其2.往扩充,无符号数与正整数补0,负数补1。数据输出与输2、putchar:putchar(c);c3、scanf:scanf(“格式说明”,输入数据列表);printf达式。‘&’C(空格、制表符、回4、getchar:c=getchar();选择结1同,且前四个的优先级高于后两个。算数运算符>关系运算符>赋值运算负关系运算的结果有两个:012、逻辑运算:C(0)、假(0)。逻辑运算符:||、&&、!优&&||&&00,||左边11。3、if语句:1. if(表达式)语句2.含else的if语句3.if-else-if语句结构4.嵌套的if语句说明:else总是与前面最近的未配对的if语句配对,组成if-else语句。(易错41235、Switch:switch(表达式){case3:default:}break语句标号、goto循环结1、While语句:while(表达式){循环体语 2、Do-while语句:do }while注意while语句与do-while语句的区3、for语句:for(表达式1;表达式2;表达式3){ 循环体语句} 隔开,可以缺省2.循环体语句可以是空语句3.死循环函1函数返回值的类型名函数名(类型名 形式参数名1,类型名 形式参数{}int,return2、库函数:C#include<……>或#include“……”常用的库函数stdio.h、math.h3、函数调用:函数名(实参列表)函数可以直接或间接的调用自己(难点、易考点)指针(非常重要、必考1、指针变量:用来存放指针(即地址)2、定义形式:类型名*1,*3、二级指针:类型 **指针变量名1vc6.04通过求地址运算符“&”Cmalloc、NULL、0、‘\0’,此时应在程序前加上 记住:间 运算符“*”的优先级比++、--运算符的优先级数组(必考 2、一维数组:定义形式 类型名数组名[常量表达式0类型一致;1][2];1.义标识符;2.方括号内必须是常量表达式,值必须是正的整形常量;3.0;4.内存中按行的顺序依次存放各个元素;5.一维数组。号,按行的顺序(顺序)给数组元素赋值,不足补0;数组名[行下标][列下标],数组元素字符自动以’\0’1; 值例:char str[10]={“o”}或char 使用指针指向字符串:例:char o”;或char*p; o”;将字符“o”在内存中存放位置的首地址赋给指针 charname[][20]=name[0]、name[1]、name[2]、name[3]代表的就是这符串常量的首地 *pname[4]={“I”,”am”,”a”,”teacher”};或 *pname[]={“I”,”am”,”a”,”teacher”};可以通过pname[i]来上述的字符串,通过pname[i][j]来该字符串中的字符字符串的输入输出:输出:1.printf(“%s”,”o”);或charstr[]=”o”;printf(“%s”,str);2.char 1.gets(待输入字符串首地址);gets函数可读入空格和回车符,并自动用‘\0’取代最后的回车符,区别于scanf函数 1.拷贝:strcpy(char*d,char*s);2.求长度:strlen(char*s);长度比实际所占的自己数少1;3.连接:strcat(char*d,char*s);比较:strcmp(char*s1,char文文件指针 'x'并以写入方式打开,将文件指针指向文件头。如果文件已存在fopen用失败并返回FALSE。文件使用方 意 读写打开一个文本文件,允许读,或在文件末追加数据 关闭文件:fclose(文件的操作:1.判断文件是否结束:feof(文件指针);1,设置文件的位置指针的位置:fseek(文件指针,位移量,移动起始点移动起始点:SEEK_SET0文件开始,SEEK_CUR 1文件当前位置,SEEK_END 2 文件尾;3.获得文件位置指针的当前位置:fl(文件指针);4.将文件位置指针移回到文件开头:rewind(文件指针);等价于fseek(fp,0,SEEK_SET);5.cp=getc(fp);putc(ch,fp);6.fscanf(文件指针,格式控制字符串,输入列表);fprintf(文件指针,格控制字符串,输出项表);7.fgets(str,n,fp);注:读入的字符长度为n-1;fputs(str,fp);8.fread(buffer,size,count,fp); 分类:C4,auto(自动)、register(寄存器)、static(静动态分配:1.分配内存单元:malloc(size);例int(sizeof(int));2.释放内存单元:(p);3.分配多个同一类型的连续的空间:calloc(n,size)例:int*pint;pint=(int*)calloc(10,sizeof(int));Main(了解)C语言跟内存分配方从静态区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static在栈上创建。在执行函数时,函数内局部变量的单元都可以在栈上创建,函数执行结束时这些单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用或deleteCalloca,calloc,malloc,,realloc,sbrk其中alloca是向栈申请内存,因此无需释放.malloc分配的内存是位于堆中的,并且没有初始化内存mallocmemsetcalloc则将初始化这部分的内存,设置为0.而realloc则对malloc申请的内存进行大小的调整.申请的内存最终需要通过函数sbrkmalloc/calloc/COS.C前有多少可用内存.如果程序malloc的大小超出了库里所留存的空间,那么将首先调用brk系统调用来增os,而是保留在内部结构中.可以打个比方:brk类似于批发, malloc()calloc()都可以用来分配动态内存空间,但两者稍有区别。Void*malloc(size_tvoid*calloc(size_tnumElements,size_tmalloc()calloc()malloc()calloc()malloc(0;malloc()函数的程calloc()calloc(numElements,sizeOfElement);malloc(numElements*sizeOfElement)malloc()calloc()calloc()函数会返回一个由某种对象组成的数组,calloc(numElements,sizeOfElement);malloc(numElements*sizeOfElement)CC程序还是冲破了这种限制。因此,尽管结构体与共用l结构体 结构体{11;类型名2}结构体变量中成员的:1.结构体变量名。成员名;2.结构体指针变量->成员名l一维数组与指针:1.数组名就是数组的首地址,是常量,不可改变;2.通过指针一维 二维数组与指针:1.1a[2][3],a[0]、a[1]的两个一维数组组成,a[0]、a[1]是地址值,是列地址。它*指针数组名[常量表达式];例int*p[3];p1,14个字节大小[]的优先级大于*行指针:类型名(*指针数组名)[常量表达式];int(*p)[3];p1,13*4数组与函数:1.fun(int*a)、fun(inta[])、fun(inta[N]);2.一维数组元素地址作实参相似于一维数组名作实参;3.二维数组名作实fun(double(*a)[N])、fun(doublea[][N])、fun(doublea[M][N]);4.指针数组作实参,函数首部可写成fun(double*a[M])、fun(*a[])、fun(double**a);这些函数不要求会写,但是必须能读懂程序。C一、Cwhileuntilfor2变量:C整数类型:整数常量有十进制、八进制和十六进制intshortintlong32short16,int3216实型常量的表示方法:(1)十进制,0.0;(2)指数形式4floatdoublelongdouble格,\ddd——138)3C算术运算符(+-*/ 关系运算符(><==>=<=!=)逻辑运算符(!&&位运算符(<<>>~|^条件运算符(?:)指针运算符(*求字节运算符分量运算符(.->)51、putchar()6一维数组的定义:类型说明符数组名【常量表达式】;先定义后;一维数组初始化时二维数组的定义:类型说明符数组名【常量表达式】【常量表达式】Cstrupr()7(2)Cmain()函数定义的一般形式:(1)类型标志符函数名(){}类型标志符函数名(形式参数列表}returnreturnvoid 、、如果使用库函数,一般应该在本文件开头用#include需要用到的信息“包含”到本文件中。.h、如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般、如果被调用的函数定义出现在主调函数之前可以不 、如果已在所有函数定义之前,在函数的外部已做了函数 8储空间的方式,静态方式是指在程序运行期间分配固定的空间的方式;空间分为程序区、静态区和动态区;全局变量全部放在静态区中,程序开始时分配空动态区中存放以下数据 寄存器的(register),外部的(extern),如果不加以,就自认为是auto型就会自动分配空间属于动态方式。Static局部变量是在函数调用结束后不而保动赋值为0或者空字符,虽然静态局部变量在函数调用结束后仍然存在,但是其他函数不 键字extern对该变量做外部变量。在多文件中,也可以采用extern 可以采用在定义外部变量时外加一个static,这在程序模块化设计中加强了通用性。Static来一个变量的作用有二个,一个是在对局部变量时。则为该变量分配的空二、CC:1、宏定义;2、文件包含;3(一)1、不带参数的宏定义,#define标志符字符串,标志符称为“宏名”,在与编译时将宏 别可参见强《C程序设计第二版》P191,宏替换不占用运行时间,只占编译时间。(二)是作两个文件进行连接的,而是作为一个源程序编译时,得到一个目标文件(.obj),在include命令中,文件可以撇号或尖括号括起来,二者的区别是用尖括号时,系统存放C库函数头文件所在的中寻找要包含的文件,称为标准方式,撇号时,系统在用户当前所在的中寻找要包含的文件,若找不到,再按标准方式查找。(三) 1 1(一)指针是一个特殊的变量,它里面的数值被解释成为内存里的一个地址。要搞清一个指先几个指针放着做例子(二指针的类 指针所指向的类 指针的 指针本身所占据的内存 int* sizeof(int*)=4Sizeof(int*)=char*ptr;char*charsizeof(char*)=1 Sizeof(char*)=4int**ptr;int**int*sizeof(int**)=4 Sizeof(int**)=4int*ptr[2];int*[2]int[2]sizeof(int*[2])=8Sizeof(int*[3])=4int(*ptr)[3];int(*)[3]int()[3]sizeof(int(*)[3])=12Sizeof(int(*)[3])= char(*)[3]char()[3] Sizeof(char(*)[3])=4 int*(*)[4]int*()[4] Sizeof(int*(*)[4])=4C两个概念,是精通指针的关键点之一。32323232sizeof(XX,就相当于说XX4(三)这里&是取地址运算符,*appinta=12;intb;p=&a;//&aint*,int,aa。ptr=&p;//&pp*,int**。该指针pint*p*ptr=&b;//*ptr,&b一样的,所以用&b*ptrintintintarray[10];pa=&a;//&aint**ptr=&pa;//&pa*ptr=&b;//*ptr&bchar**parr=arr;//arr,arrstr=*parr;//*parrstr=*(parr+1);//*(parr+1)str=*(parr+2);//*(parr+2)在例七中,&a*ptr*ptr那么*ptr(四)1。Char2。int*3。printf("%c\n",*(ptr+1));a[4]ptrsizeof(int),printf(“%d\n”*(ptr+1));a[4],a[5],a[6],a[7]int4.ptr+=5;//ptr5sizeof(int),ptrint*,int,a。3ptr1,ptra4字节,此时指向了数组a中从第4号单元开始的节。ptroldnptrnewptrold,ptrnewptrold说,ptrnewptroldnsizeof(ptroldptroldnptrnew,ptrnewptrold,ptrnewptroldptrnewptroldnsizeof(ptrold,ptrnew(五)左边的值必须为可修改的左值(l-23pint*,int。表达式&fMSVC++6.0p{}}用是把一个整数的节的顺序来个颠倒。注意到了吗?在函数调用语句中,实参&a的它指向的类型是char。这样,在实参和形参的结合过,须进行一次从int*类型char*temp,temp=(char*)&a,tempunsignedintTYPE*ptr;//TYPEint,char ;//我们的目的是要使指针ptr指向地 (十进)ptr=a;//我们的目的是要使指针ptr指向地址 (十进制)编译一下吧。结果发现TYPE*ptr;//TYPEint,char的话,在你使用ptr的时候,就会出现操作错误。unsigned char*s_cfque=(unsignedchar*)0x800000;想想能不能反过来,把指针指向的地址即指针的值当作一个整数取出来。完全可以。下面inta=123,b;b=(int)ptr;//ptrstr=(char*)b;//str(六)指针数组:一个数组里存放的都是同一个类型的指针,通常我们把他叫做指针数组。*a[10];int*型变量,由于它是一个数组,已经在栈区分配了10个(int*byte,intstructa inta;intb;}typedefstructaSTRUCTA*b[4];//4STRUCTA*4*sizeoftypedefFUNCfunarr[4];//structa{inta;int}a[12];//12*sizeof(structa)=数组指针:一个指向一维或者数组的指针int(*b2) //二级指针;b220*sizeof(int)intint(*b3)[30] 例如:intarray[12][31];//数组的嵌套定义,array12int,arrayint[12][31],其指向的类型是int[31],int;intI=array[4][7]等同于I=*(array[4]+7)等同于I=*(*(array+4)+7)int*p;int**q; int(*ptr1)[31]; int(*ptr2)[41];p=array[2];//正确,parray[2]0p=array;//错误,arrayq=array;//错误,arrayptr1=array;int[31]ptr2array;//错误,arrayint[31]的指针,ptr2int[41]的指针。strcpy(s,str[0]);//strcpy(s,*str);strcpy(s,str[2]);//上例中,strchar**,char*。*strchar*,它所指向的类型是char,它指向的地址是字符串"o,thisisasample!"的第一个字符的地址,即'H'的地址。str+11char**,它指向的类型char*。*(str+1)char*,char,它指向下面总结一下数组的数组名的问题。了一个数组TYPEarray[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二,它是一个指针,的内存区是不同的。该指针的值是不能修改的,即类似array++的表达式是错误的。在不同的表达式中数组名array可以扮演不同的角色。在表达式sizeof(array)中,数组名array代表数组本身,故这时sizeof函数测出的是整个数组的大小。在表达式*array中,array扮演的是指针,因此这个表达式的结果就是数组第0号单元的值。sizeof(*array)测出的是数组单元的大小。表达式array+n(其中n=0,1,2, 。)中,array扮演的是nsizeof(array+n)测出的是指针类型的大小。intarray[10];上例中ptr是一个指针,它的类型是int(*)[10],他指向的类型是int[10],我们用整个ptr=&array,arraysizeof(),那么我来问一问,sizeof(类型的大小呢还是指针所指向的类型的大小?答案是前者。例如:int(*ptr)[10];则在32实际上,sizeof(intextern //一些mango[i]的代码6.1与定概念区别定义只能出现在一个地方,确定对象的类型并分配内存,用于创建新的对象。例如:inta[12]相当于特殊,它为对象分配内存。可多次出现,描述对对象的类型,用于指代其他地方定义的对象。例如:externint 输组与指针的过chara[9]= c=2:取地址[9980+i]的内容。Char c=p,2:5081定义为指针,但以数组方式的过char*p= c=p,运行时步骤1:取地址4624的内容,即’5081’;运行时步骤2:取得I的值,并将它与5081相加;3:取地址[5081+i]的内容。如:charexternchar指针数组保存数据地 保存数有个下标[I],就把指针的内容加上I作为地址,从中提取数据 是简单的以a+I为地址取的数据。 相关函数为malloc(),() 通常指向数据自身即为数据 extern如:externchara[];不能改写成指针形式定义,如chara[10];不能改写成指针形式func(chara[]);ca[I];随意选择数组或者指针形式1:“表达式中的数组名”就是指针。规则3:作为函数参数的数组名等同于指针用a[I]这样的形式对数组进行总是被编译器解释为像*(a+1)这样的指针 可以看作是一个指针。作为函数参数的数组(就是在一个函数调用中)修改成为第一个元素的指针 intint(*q)[2][3][5]=int(*p)[3][5] int(*r)[5]=apricot[i];int*t=apricot[I][j];intu=apricot[I][j][k];char*vegetables[]“carrot”,“celery”,“corn”,“cilantro”,“crispy”};int*weights[]={{1,2,3,4,5}, introw_1[]={1,2,3,4,5,-1};//-1Introw_2[]={6,7,8,-Int*weights[]=1,增加一个额外的参数,表示元素数目(argc2,赋予数组最后一个元素一个特殊的值,提示他是数组的尾部(字符串结尾的‘\0’字使用指针向函数传递一个数1,my_function(intmy_array[10][20]10202,my_function(intmy_array[][20]203,my_function(char**my_array,……);1,一维数组——没有问题,但须包括一个计数值或者是一个能够标识越界位置的结束2,二维数组——不能直接传递给寒暑,但可以把矩阵改写为一个一维的指针数组,并使3,三维或维——都无法使用。必须把它分解为几个维数更少的数组。intmain(intargc,char*argv[]’\0’作为结束标志,所以只需要一argc2:intarr[2][3]{{1,2,3},{4,5,6}};//将要进行传递的二维数组1:int*p[2]={arr[0],arr[1]};voidfun(intrownum,intcolnum,intint*p[3]{arr[0],arr[1],NULL};将二维数组改造成指针数组,每个指针指向voidfun(int四、C(一)struct{{

}stu1,stu2也可这样定义:struct stu1,stu2结构体数组的定义:struct 两种方式:直 。如:stu1.用指 。先定义指向结构体的指针:structstudent然后可以通过:(*p).成员变 p->成员变量来内存分配函数如:int*p; p=(int*)malloc(sizeof(int));分配一块整型大小的内存空间。注意:malloc无返回值,分配内存时要强制类型转换。内存释放函数(要释放内存的地址);有关链表具体的操作请参看强的《C程序设计(第二版)》11.7节struct结构名*structstustu间。因此上面&stu作*pstu.num*(pstu.num),这样,意义就完全不对了。psps0,ps+11素,ps+iiANSIC五、动态分intn;inta[n];题,用数组的办法很难解决。为了解决上述问题,C(类型说明符pc=(charpc。分配内存空间函数calloccalloc(类型说明符(类型说明符*)callocmallocnps=(struetstu*)calloc(2,sizeof(structsizeof(structstu)stustu2stups。2.malloccalloc0。这样一种连接方式,在数据结构中称为“链表”。11.9构中只有学号和两项。可编写一个建立链表的函数creat。程序如下:#defineNULL#defineTYPEstructstu#defineLENsizeof(structstu)structstu{intnum;intstructstuTYPE*creat(int{structstu*head,*pf,*pb;inti;{pb=(TYPE*)malloc(LEN);printf("inputNumberandAge\n");elsepf->next=pb;}}TYPEstructstu,LENsizeof(structstu)主要的目的是为了在以下程序内减少书写并使阅读更加方便。结构stucreat函数用于建立一个有n个结点的链表,它是一个指针函数,它返回的指针指向stu结构。在creat函数内定义了三个stu结构的指针变量。head为头指针,pf为指向两相邻结点的前一结点的指针变量。pbenum0typedefC/C++typedefC/C++typedef法作一个介绍。typedef,顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。类型定义简单形式:typedef 定义新数据类型INTEGER,它代表已有数据类型int。定义新数据类型REAL,它代表已有数据类型float。(二)、typedef定义类型步骤按定义变量方法先写出定义体,如int将变量名换成新类型名,如inttypedef如typedefint用新类型名定义变量,如INTEGER八、C高程序运行的效率。CCC&|^~"&"是双目运算符。其功能是参与运算的两数各对应的二进位相110。参与运算的数以补码方式a.特定位(mask中特定位置0,其它位为b.取某数中指定位(mask1,“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出1,(mask1,0“^”是双目运算符。其功能是参与运算的两数各对应的二1。参与运算数仍以补码出现。使特定位的值取反(mask1,0不引入第三变量,交换两个变量的值(设目标操作操作后状态a=a1^b1a=a^ba=a1^b1,b=b1b=a1^b1^b1b=a^ba=a1^b1,b=a1a=b1^a1^a1a=a^ba=b1,b=a1求反运算求反运算符~进位按位求反。例如~9~(0000000000001001)结果为:1111111111110110左移运算,左移运算符“<<”是双目运算符。其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,丢弃,低位补0。其值相当于乘2。例如:a<<4指把a的各二进位向左移动4位。如a= (十进制48)。右移运算,右移运算符“>>”是双目运算符。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数其值相当于除2。九、C所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。实际文件(头文件)等。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中可执行程序;也可以是一组待输入处理的原始数据,或者是一组输出的结果。对于源文件、目标文件、可执行程序可以称作程序文件,对输入输出数据可称作数据文件。通常把显示器定义为标准输出文件,一般情况下在屏幕上显示有关信息就是向标准输出文printf,putchar函数就是这类输出。键盘通常被指定标准的输入文件,从键盘上输入就意味着从标准输入文件上输入数据。scanf,getcharASCIIASCIIASCII如,数5678的形式为:ASC↓↓↓十进制码:5 678共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。由二进制文件是按二进制的编码方式来存放文件的。例如,数5678的形式为只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C文件的打开(fopenFILE文件使用方式意义 “wt”,只写打开或建立一个文本文件,只允许写数据“at”,追加打开一个文本文件,并在文件末尾写数据“rb”,只读打开一个二进制文件,只允许读数据“wb”,“ab”“rt+”,读写打开一个文本文件,允许读和写“wt+”“at+”“rb+”,读写打开一个二进制文件,允许读和写“wb+”“ab+”r(read):读w(write):a(append):t(text):b(banary):凡用“r”•字符读写函数:fgetc•字符串读写函数:fgets•数据块读写函数:d和•格式化读写函数:fscanftypedef{shortlevel;unsignedflags;charfd;unsignedcharhold;shortbsize;unsignedchar*buffer;unsignedchar*curp;unsignedistemp;shortTurboCstdio.hCflags:是一个10位的标志字,其具体含义如下: fclose 45EOF6789十、C方法编程,以增加可读性;2;3main4、运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现。也可以用“条件编译”命令进行程序调试(printf要进行编译并执行。当调试完毕,这些语句不要再编译了,也不再被执行了)printf)有的系统还提供debug(调试)工具,流程并给出相应信息,使用更为方便,如断、I/O口的电来方便完成程序的运行,使用时要先打开OptionsforTarget'Target1'(工程菜单里的目标‘TARGET1'属性)点DEBUG 选中左边useSimulator\loadApplicationatsta\Gotillmain;按确定后退出到编辑画面,要先对源程序进行编译后没有错误才可以按主菜单上的调试按钮,进行调试的,F10的单步、F11第一章面向对象程序设计概71213第二章C++程序设计基1、C++CC++C;C++2、C++一般将变量(对象)、类型及类的定义、函数的等放在头文件(扩展名为.h);而C++源程序(扩展名.cpp);4、C++5、常量是指在程序的运行过,其值不能被改变的量。常量包括:整型常量:5,8…实型常量:2.18,5.18…字符常量:a,b…字符串常量:“”,…布尔型常量:false,true6、在程序的执行过其值可以变化的量称为变量,变量在程序设计中需要通过标识符命1,2,…变量的方式包括:地址、指针、指针变量的定义格式:类型*指针变量的使用格式:指针变量名=&8、是C++独有的类型,实际上是变量或对象的别名,是一种变量的方法。使用时需要对变量进行初始化,并将绑定到相应的变量名上;对的修改就是对变量本身值的修改。的格式:类型&名=变量名;9符号常量必须先定义后使用;变量的定义形式 数据类型常量名=常量值 数据类型const 10、运算符和表达式是C++用于处理数据的工具。表达式即程序中用于计算的算式,是指通过各种运算符(包括括号)将常量、变量及函数等有关操作数连接起来的并符合C++语定的算式。这种算式可以很简单,也可以很杂。(5)赋值运算符(6)条件运算符(7)逗号运算符(8)指针运算符(9)符1,2,21,1,2,…n11C++中惟一的三元运算符,它可以实现简单的选择功能。1?2:1,1true,2false,313、位运算:即二进制位运算符,具有位运算能力是C++优点的一现C++ 按位与运算符; 按位或运算符; 按位异或运算符 按位取反运算 左移运算符 右移运算符Double、float、unsignedlong、long、unsigned、int、short、格式分别如下:(1)类型说明符(表达式);(2)(从标准外部设备(如键盘)16C++cincout17C++系统预定义的运算符,用于输出:cout<<1<<2<<…<<2>>…>>n;18I/019、C++20、C++具有三种循环结构控制语句:While、do-while、21、continueswitch2223、结构体的格式如下struct{数据类型1 数据类型 成员名┇数据类型 成员名了结构体类型以后,可以进行结构体变量的定义,定义格式如下:结构体 结例如:student24、联合体的格式如下union{数据类型1 数据类型 成员名┇数据类型 成员名了联合体类型以后,可以进行联合体变量的定义,定义格式如下:联合体名枚举类型变量的格式如下:enum枚举类型名{变量列表}enumcolor{red,yellow,blue,white,black};26、typedefC++的类型定义的关键字。typedef种基本数据类型名和自定义的数据类型名以外,还可以为任何已有的数据类型另外命名。别名也可以当正式数据类型使用27、类型定义的使用格式如下:typedef已有类型名 通过typedef可以为一个既有数据类型多个别名。例如:typedefintnatural,integer; integeri,j; naturaln;第三 函2、C++返回值类型函数名(形式参数表 函数语句序 函数调用的格式如下:函数名(实参表3、函数原型的格式如下:返回值类型函数名(参数表4、函数的参数传递是指函数调用过形参与实参结合的过发生函数的实际调用时,才给函数的各形参分配空间,同时将实参的值依次传递给函数调用,系统将释放形参所占用的单5、按参数传递情况,函数调用可以分为:传值调用、传地址调用、调可以作为函数的返回值类型和形参,使用作为函数的形参时,主调函数的实参7inlineinline返回值类 函数名(形式参数表 函数语句序 inline1~510、函数重载,即具有相同或相似功能的函数使用同一函数名,但这些同名函数的参数类用哪一个函数。C++12、C++sin(),cos(),tan(),abs()sqrt(),log10(),rand()等变量不仅具有作用域,而且在内存中还有不同的类型函数原型作用域位运算:函数原型中形参的作用范围就是函数原型作用域;函数原型中形参变量的作用域起于函数原型的左括号,结束于函数原型函数原型作用域是C++程序中最小的作用域。例如,以下函数原型doublefun1(doublex1,doublex2);x1,x2fun1(4)文件作用域:C++程序中,在函数之外的标识符具有文件作用域。具有文件作用域的标识符,其作用域开始于处,结束于该文件的结束处14、变量的类型指变量在内存中的方 采用堆栈方式分配内存空间,属于暂时性,其空间可以被若在所有函数和程序段中都可以1516autostatic能部分放在不同的文件中。一般将部分或说明部分(包括类的)形成为.h.cppC++源程序文件的重要组成部分。一般可以将函数的、类型明及全局变量的(包括宏定义等)有关部分编辑为头文件,即.h文件。C++标准库32对于大型的应用程序,一个工程文件往往包含多个头文件(.h)和源文件(.cpp)19、编译预处理:C++20、宏定义:C++C#define以下语句定义了一个符号常量:#definepi3.14159;//pi3.14159#undef#define21、文件包含指令即#include:#include名>、#include“文件名”。第四 类与对1面向对象程序设计的任务是类的确定和对象的创建,而不是将各个具体的对象逐一2类中的数据成员可以是C++语定的任意数据类型,但不能用类型auto、registerextern指针和可以作为类的成员。 及权限控制。没有明确指定类成员 权限时,C++结构体的成员是公有的,而类的成员是私类成 控制表问仅允许本类成员函数一般将成员函数为函数原型,在类外具体实现成员函数。成员函数的定义:返回值类型类名::成员函数名(参数表){ inlineC++基本数据类型和该类型的变量之间的关系对象的定义格式如下:类名对象名1,2,…,n;仅仅定义了类,系统并不会分配空间,只有定义了对象后,编译系统才会在内存中对象成员的包括:圆点形式:对象名.公有成员;指针形式:形式一:对象指针变量名->公有成形式二:(*6、NewNew运算符使用形式:(1)指针变量=new 数据类型;(2)指针变量=new (3)指针变量 数据类型[元素个数new0)给指针变量。例如:int*p1;double*p2;p1=newint(12);p2=newdouble[100];p1;动态分配了具有100个双精度实型数组元素的数组,同时将各区的首地址指针返回给指p2;7对象是类的实例,在创建了对象以后,编译系统将给对象分配空间。对象在定义的时需要初始化。对象生命期结束时要进行清理工作。句}构造函数只能地影响对象的数据成员初值。象,默认构造函数形式:类名::类名(){ 析构函数不能有参数,也不能重载。定义格式如下:类名::~若一个对象是使用new运算符态创建的,在使用delete运算符释放它时系统自动生成的默认构造函数形式如下:类名::~类名(){ 构造函数的参数是本类对象 ;C++为每一个类定义了一个默认 构造可以根据需要定义自己的构造函数,从而实现同类对象之间数据成员的值传递。时,需要调用构造函数;将临时对象的值初始化另一个对象,需要调用构造函数。构造函数的特点:构造函数名与类名相同,并且没有返回值类型构造函数可写在类中,也可以写在类外;构造函数有且仅有一个参数,即是同类对象的;如果没有显式定义构造函数,系统自动生成一个默认形式的构造函数。默认构造的形式:类名::类名(const类名&对象名);8、关于浅:在用一个对象初始化另一个对象时,只了数据成员,而没有资源,使两个对象同时指向了同一资源的方式称为浅;默认构造函数所进行的是简单数据,即浅9、关于深:通过一个对象初始化另一个对象时,不仅了数据成员,也了资源的方式称为深;自定义构造函数所进行的是深静态成员的定义与static静态成员的定义:例如:staticint staticvoiddis静态成员的:类名::静态成员名类型类名::静态数据成员=初始化值;12、静态成员函数是指使用static关键字的成员函数静态成员函数可以直接该类的静态数据成员,而非静态数据成员则可以通过对静态成员函数不能直接类中的非静态成员。如果静态成员函数需要非静态员,需要通过对象名才能该对象的非静态数据成员13、友元:若需要在类的外部直接类的私有数据成员,在C++中,通过定义友元可以实现这能。友元的性质:非对称性(单向的):若B是A的友元,若没有特别,则A不是B的非传递性:若B是A的友元,C是B的友元,若没有特别,则C不是将该函数为类的友元函数。友元函数的格式如下:friend返回值类 函数名(参数表使元函数时需注意:友元函数可以类中的私有数据成员,但友元函数不是类的能直接使用对象名,而必须通过对象操作数据成员。友元类:不仅函数可以为一个类的友元,一个类也可以为另一个类的友元。 友元类 格式 类名14类中,即类作用域是指在类的中用一对花括号括起来的部分。类对象在时被创建,在释放时被终止。全局对象:全局对象的作用在域整个程序中,它的作用域范围最大、生存期也最长。15C++就会产生。解决命名的办法有两个C++提供了第二种解决命名的方法——名空间名空间的定义:枚举类型变量的格式如下:namespace名空间标识符名{成员的名空间成员的:使用名空间的成员时要用名空间名进行标识,从而有效解决了标识符。名空间成员的方式如下:名空间标识符名::成员16、为解决数据共享与数据安全的统一,C++常的说明形式如下 类型说明符&名const:const18、const说明的成员函数称为常成员函数。常成员函数的说明格式如下:类 函数(参数表 const。常数据成员:类的数据成员也可以是常量或常,类的数据成员中被const说明的数第五章数组与指组成数组的任一数据称为该数组的元素。数组在内存中占有一片连续的空间。void2、一维数组的定义形式如下:数据类型合C++规定的数据类型;数组名名应遵循C++标识符规则;

0。一维数组元素的:一维数组及数组的元素只能逐个,而不能的数组初始化可以在定义数组的同时进行,例如:inta[5]={1,2,3,4,5};:inta[5]={1,2,3,4,5};:int一维数组的方式:无论是一维数组还是数组,其数组元素在内存中以顺序和连续方式,占据一片连续的单元;数组名是常量,表示数组首一维数组是数组中最简单的情况。它的形式是按下标从小到大的顺序连续在内存中。

32二维数组的定义形式如下:数据类型1]二维数组元素的:二维数组及数组的元素也只能逐个,而不能的引二维数组元素的形式为:数组名[下标][下标二维数组的方式:二维及数组的数组元素在内存中以优先的方式顺序连续对于二维数组,优先就是行优先,即按行,先第一行,然后第二而每一行内的各元素,则与一维数组相同,按列下标(低维下标)二维 数组的数组名也可以作为函数参数进行数据传递和数据共享使用数组名传递数据时,传递的是数据在内存中的地址。对象数组的定义:类名数组名[下标表达式];对象数组的:数组名[下标].成员例如:Point5C++语言的重要内容,它提供了一种直观的地址操作方法;能导致系统。6、内存空间的方式:计算机内存单元按一定的规则进行编号,这个编号如间号和门牌号一样,可以标定计算机内存单元的物理位置,通常称为单指针也必需先定义,后使用;定义指针的语法形式如下:数据类型*指针变量名;指针变量具有以下特点:指针定义时所指的数据类型,是即指针所指向的数据类型;unsignedlongint8、“*”和“&”运算符:“*”和“&”*;&9、指针的赋值:初始化前,指针是一个随机值;盲目使用,可能产生错误甚至系统;在定义指针的同时进行初始化赋值:数据类型 0,int*p=0;0由于void型指针并没有指向一个确定的数据类型,因此,void型指针可 任何例如:p+2:p2p-1:p100012一维指针数组的定义形式如下:数据类型*指针数组名[常量表达式];指针数组14对于指针型函数,通过对空间的有效组织,则可以向主调函数返回大量的数据。指针型函数的一般定义形式:数据类型*函数名(参数表){函数体}函数指针定义形式:数据类型(*在C++程序中,既可以定义一个字符数组用于字符串,通过数组元素所需要的也可以定义一个字符指针,通过指针所需要的字符指针字符串:若采用指针字符串,则需要定义一个指向字符串的指针,然后通 例如:char 对象指针的定义形式:类名*对象指针名;20、类数据成员的指针:指向类数据成员的指针的定义形式:类型说明符类名::*指针类数据成员指针的赋值:指针名=& 21、thisC++thisthisthisC++newdelete23、newC++newnew运算符的使用形式为以下三种 指针变量 数据类型 指针变量 数据类型(初始值 指针变量=new数据类型[元deletenewdelete运算符的应用形式如下:(1) delete指针变量名;(2) delete[]指针变量delete:deletenewdelete第六 继承与派1派生类具有自身的属性和行为,不然就完全等同于基类,这样就没有必要派生新类;C++class派生类名:继承方式 基类名{派生类新定义的数据成员;派生类新定义的成员函数;} 缺省情况下表示private方式。7C++改造基类成员包括两个方面:(1)(2)通过在派生类中定义同名成员(包括成员函数和数据成员)来在派生类中不起作用添加派生类新成员:添加派生类的新成员是继承机制的内容。仅仅继承基类的成8public(公有)员和保护成员被继承后其属性没有变化,即分别作为派生类的公有成员和保护成员,派生类的成员可以直接它们。但是,在公有继承时派生类的成员无法基类的私有成员。之后,全部基类成员在派生类中都成为了私有成员或不可的成员,无法进protected保护成员均作为派生类的保护成员,派生类的成员可以直接它们,而派生10在派生类的生成过,派生类将产生新的成员,对新增数据成员的初始化需要由派生派生类构造函数的格式:派生类名::派生类名(数表):基类名(参数表1),对2){派生类新增成员的初始化 (如果有内嵌成员对象),12class派生类名:继承方式 基类名1,…,继承方式 基类名n{派生类新定义的成13派生类名(数表):基类名1(参数表1),…,基类名n(参数表n){派生类新增成内嵌对象成员的构造函数执行顺序与对象在派生类中的顺序一致,而处于同一层次成对基类中某个成员的出现不惟一的情况,这种现象称为对基类成员的二义16virtual其定义格式如下:class:virtual第七章多态1运行时多态:运行时多态是指在程序运行过根据产生的信息动态地确定需要调用哪2、C++采用联编(binding)技术来支持多态性。多态性的实现过,确定调用哪一个同3、静态联编(StaticBinding)是指:在编译阶段完成的联编方式。在编译过,编译系统可以根据参数类型和参数数量这种在程序运行过进行的联编方式称为动态联编(DynamicBinding)。动态联编又称为:晚期联编、后联编动态联编的主要特点包括:使编程更具灵活性、对问题的抽象更方便、程序的易性C++中,动态联编是通过继承和虚函数来实5虚函数是非静态的成员函数,经过派生之后,虚函数在类族中可以实现运行时多态。虚函数是一个在基类中通过virtual,并在一个或多个派生类中被重新定义的成虚函数的格式如下:virtual返回值类 函数名(参数表){函数体 关于虚函数的说明:虚函数实际上是一个在类的中使用关键字virtual来限定的成成员函数一旦被为虚函数,则无论该类被继承了多少层,在各层virtual实现动态联编方式的前提:先要虚函数、类之间满足赋值兼容规则、通过指针与引虚函数的调用:通过对象指针、对象调用虚函数实现动态联径,只需将对象指针指向相应的派生类或相应的对象,就可以实现动态联编,实使用虚函数时应注意:当类的某成员函数被为虚函数后,派生类的相应成员函数就 6、不具备多态特性的函数:静态成员函数不能为虚函数。根据静态函数的特性,它不内联成员函数不能为虚函数。因为内联函数的执行代码是确定的,不具有多态性的特虽然C++中不能虚构造函数,但可以虚析构函数,而且常被定义为虚函数。 ~类名(){函数体} 纯虚函数在时要在函数原型的后面赋0纯虚函数的一般格式如下 返回值类 函数名(参数表函数重载包括:成员函数重载如:构造函数重载;一般成员函数重载;C++不能重载的运算符只有六个,分别是:成员运算符:.成员指针运算符 -作用域运算符 符 三目运算符C++关系将会发生。10、单目运算符一般重载为成员函数。“++”和“--”单目运算符重载为类的成员函数时,由于不能区分是运算符前置还是后置,C++约定,若重载函数参数表有一个整型参数,表示运算符后置,运算符重载为成员函数后,可以自由本类的任何成员this对于单目运算符,对象的this指针直接给出操作数,因此不再需要任何其他参数。运算符重载为成员函数的格式:返回值类型operator运算符(形参表){ 函数体}11、operator运算符重载为友元函数的格式:friend返回值类型operator运算符(形参表){ 数体}第八 模1C++2temte<模板形参表>返回值类型 函数名(参数表){函数体}temte是模板定义的关键字。<模板形参表>中包含一个或多个用逗号分开的模板执行的具体函数,只处理一种确定的数据类型。4C++预定义的数据类型,也可以是与函数模板的定义类似,其定义格式如下:temte<模板形参表> 类模板{成员的类名:temte<模板形参表>返回值类型类模板名类型名表:成员函数名(参数表当类模板在程序中被时,系统根据处的参数匹配情况将类模板中类模板实例化的格式如下:类模板名<实际类型>;定义模板类的对象的格式如下:类模板名<实际类型> 5、STL(StandardTemteLibrary)标准模板库,是由泛型算法和数据结构组成的通用C++标准程序库(C++StandardLibrary)ANSI/ISOC++标准中最具革新和性的一部分。OOP,STLSTL(requirements)(concept)、模型容器(container)(algorithmn)、迭代器(iSTL(itor)(algorithms)、容器(container)、函数对象(functionobjects)、适配器(allocatorsadapter)容器和算法通过迭代器可以进行无缝连接。(string也可以认为是STL的一部分)STL是的C++标准函数库中的一个子集,这个庞大的子集占据了整个库的80%左右C++标准函数库STLvector、queuestring也可以操控内建数组。如:findInput对象,这种迭代器可以被修改、Output与Forward向前读写(ReadandWritesforward), 向前向后读写(ReadandWritesforwardRandom 随机读写(ReadandWritewithrandomaccess),函数对象:STLSTLstd::unary_function、它们都在头文件<functional>中第九 I/O流I/O (屏幕2、iosC++I/Oiosstreambufiosios3、ios:ios2istreamostream,iosstreambuf(flags),I/OI/Oios,istreamostreamistreamC++ostreamC++主要的4、iostreamistreamostreamiociniocout,cerr,clogI/OI/O I/OI/OI/OC++中,cin、cout、cerr、clogI/O4cinistreamclog(cerr,clog能)。streambuf3filebuf、strstreambuf、stdiobufstreambuf:streambufstreambufioI/Oios1.ios:ios15状态标志位。iosios值用ios类成员函数设置状态标志:ios类定义了设置状态标志:long ios::unsetf(long ios::flags();或 ios::flags(longios流类对象.ios(ios::状态标志)输出宽度设置intios::width(intn)设置输出宽度为n,并返回原来的输出宽度intios::width() charios::fill(charch)ch,charios::fill()int nintios::precision iosiomanip.h 1.2.3.4.5.6.插入“\0”7.1.setbase(int3.志4.setfill(int5.6.setw(int自定义输出操作符函数ostream&操作符函数名 }自定义输入操作符函数istream&操作符函数名 }二进制文件是按数据在内存中的形式原样输出到磁盘文件中C++用#include指令包含头文件fstream.h;2.为文件定义一个流类对象;如:ifstreamin;//定义输入流类对象in ofstreamout;//定义输出流类对象outfstreamio; //定义输入/输出流类对象iovoidopen(char*filename,intmode,int第三个参数表示文件的方式ifstream:ifstream4ifstream()、ifstream(filedesc)、ifstream(filedesc,const*,int)ifstream(constchar*,int=ios::in,ios::in,ios::openprotios::in,ios::openprotofstream:ofstream4ofstream()ofstream(filedesc)ofstream(filedesc,constchar*,int)ofstream(constchar*,int=ios::out,int=filebuf::openprot)ios::out,共享/保护模式的默认值为ios::openprotfstream:fstream4fstream()、fstream(filedesc)、fstream(filedesc,constchar*,int);fstream(constchar*,int,int=filebuf::openprot)ios::openprot。(如内存变量)交换信息的get()、getline()。put()、write()等。(ios::binary)C++可以通过重载:输入运算符“>>”输出运算符“<<”ostream&operator<<(ostream&out,class_name{out<<obj.out<<obj.┇returnout;}参数说明:参数out是ostream类对象的,因此,out必须是输出流out应符合C++关于标识符名规则第二个参数是自定义数据类型class_name的对象的istream&operator<<(istream&in,class_name{in<<obj.in<<obj.┇returnin;}第十常处理机依然能合理处理运行过的出现的各种异常,而不会产生各种意想不到的后传统的异常处理方法:传统程序设计方法中,通常采用系统提供的中断函数或指令。voidC++voidassert(表号voidexit(中断程序执行,返回退出代码(值return2、C++C++异常处理的实现:C++try、throwcatchC++用于实现异常处理的机制。在异常处理机制的支持下,可以更合理、更有效的处理程序运行过存在的各种异3、异常处理的语法:try-throw-catchC++throw异常处理程序的使用形式:throw表达式使用形式:throw try语句块实际上是程序代码的保护段,表明该程序段在执行过可能会产生异常try一旦该代码段或函数在调用过产生了异常情况,throw语句将抛出这个异常,并throw当函数出现了自己不能处理的异常,就可以使用 表达式”将异常抛出throw;throw如果异常类型是一个省略号(…),则表示catch语句可以处理任何类型的异常;catchtrycatch若保护段在执行期间或保护段调用的任何函数中(直接或间接的调用)有异常抛出,则从通过throw操作数创建的对象中创建一个异常对象(可能包含一个构造函数)。catchcatchcatchcatchtryabort若有匹配的catch处理块,如果它通过值进行捕获,则其形参通过异常对象进行初始化。如果它通过进行捕获,则参量被初始化为指向异常对象。在形参被初始化catchtrycatch A2,…,An);函数原型表明可以抛出的异常类型为A1,A2,…,An及这些类型的子类型异常7、抛出任意类型异常:类 函数名(参数表throw8、不抛出异常类 函数名(参数表 throw之后是一个空表,该函数原型表示该函数不抛出任何类型的异常910、C++标准异常类:C++exception9exceptionthrow()类out_of_range_类类型的形class{类的构造函类的析构函类对象通过成员选择符.类对象的成员(数据成员或成员函数)也可通过指向对象的指针来间接运算符->该对象。p->类和结构体类型的异C++增加了class类型后,仍保留了结构体类型(struct),而且把它的功能也扩展了。字struct。 为了使结构体类型也具有封装的特征,C++不是简单地继承C的结构体, 统将其默认为public。 如果想分别指定私有成员和公用成员,则应用private或public作显式。 而用class定义的类,如果不作private或public,系统将其成员默认为private,在需要时也可以自己用显式改变。友友元函数定 友元函数定义格式friend友元函数的特friend友元函数不能直 类的成员,只能对象成员友元函数可 对象的私有成员,但普通函数不行调元函数时,在实际参数中需要要的对象格式:函数类 operator运算符(形参表){运算符的重载的特定义格式单继承class{派生类新定义成员 多继承class11,2{派生类新定义成员 特派生类的构造函数和析构函m(m) 先按在派生类时列出的次序,从左到右调用基类的构造函数再按类中对象成员出现的次序调用对象成员(子对象)的构造函数虚基类使用作用域分辨符来唯一标示并分别它们.(同一变量名相互区分,并不相连对象名.基类名::成员名 //数据成 3虚基类格式:virtual继承方式基类名;虚函数的定义虚函数的格式virtual(参数表)模板的定函数模板格temte类型形参(形参表){}temte类型形参表class类名{};temte类型形参表返回类型类名类型名表::成员函数(形参表关键字temte总是放在模板的定义与的最前面关键字后面是用逗号分隔的模classtypename.整型 Visualc++6.0中占4个字节;Turboc2.0占2个字节取值-短整型shortint2个字节取值:-32768-32767长整型longint4个字节取值:- 无符号整型unsignedint4个字节取值:0-无符号短整型unsignedshortint2个字节无符号长整型unsignedlong 4个字char(ntr)c如:101"A",134,XOA单精度float4,32:3.4E-38~3.4E+3867double8,64:1.7E-308~1.7E+38数组结构体共用体指针类型空类型输入输出函printf(格式控制字符串,输出列表)//格式控制字符串可由格式字符串(以%开头)和非格scanf(格式控制字符串,地址表列putchar()//字符数据的输出等同与printf(%c,.)位于<stdio.h>getchar()//从键盘输入中一个字符。逻辑运!(非),&&(与),||(二维数1][注:a.器单元是一维线性排列的。是按行存放的inta[][3]={1,2,3,4,5,6}0a[0],a[1],a[2],而这个—维数组都有4个元素。如一维数组a[0]有元素为:字符数c中没有字符串数据类型,是用字符数组来表示字符串变量的。字符串总是以''作为串结束sizeofcharcharprintf("%dn",sizeof(c));//7stringprintf("%dn",sizeof(c1));//8,对于字符数组只能自己加结束符printf("%dn",strlen(c));//6求字符串长度时,不包含结束符''printf("%dn",strlen(c1));//6stdio.hstring.h):1strcpy(字符数组名1,字符数组名2)--把字符数组2中的字符串到字符数组1中,串strcmp(1,2)ASCIIstrlen(字符数组名)返回字符实际长度(函对于被调用函数的和函数一般形式:类型说明符被调函数名(类型,类型变量的作用域及特全局变量:又称外部变量,它是在函数外部定义的变量。它不属于哪一个函数,而属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。只有在函数中经过说明的全局变量才能使用,说明符为:extern.但是在一个函数之前定义的全局变量,在该函数内可以再加以说明。变量的特性 c.static(静态变量)为静态方式,可分为静态局变量和静态全局变量。static如:在一个函数f(){staticintstaticfloata[5];特点:(1).静态局部变量在函数内定义,当调用时已存在。当函数f()退出时仍然存在,

0对基本类型的静态局部变量若没赋值,则系统自动赋值为0.d.寄存器变量(register).当一个变量反复时,就可将此变量为register。放在cpu的寄存器中。别注:只有局部自变量和形式参数才能定义为寄存器变量。使用个数很有Truboc、MSC内部函数和外部函内部函数--一个只能被本文件中的其他函数所调用的函数。形式:static类型函数名extern,形式:externintfun(inta,int其中,extern指针变[类型]类型标识符*[类型]类型标识符*指针变量名=变量地址;(注:int*p;表示:变量p针变量;另外P可用来存放整数变量的地址。指针变量本身的都是地址,每个指针(地址)4(VC),例:char*p,size(p)为==4);指针运指针赋值:如:intx;int*p=&x; 也可在程序中对其初始化:intx,*p;..p=&x生不可预料的。如:int*p;*p=100;//错误,p没有初始化。11,sizof(指针变量所指类型)。指针与一维数注:ca&a[0]a对于如:intp=a;或p或定义为:intint*p= 表示元素a[i]的内容。p++,p- 表示使p后移或前移一个元素的空 (*p)++,(*p) p11.相当于:*p=*p*++p;*-- p11*(++p),*(--++*p,-- p1动态申请空内存申请库函数:void*malloc(size);例:int*p=(int*)malloc(10*内存释放库函数:void 预处指在进行编译的第一遍扫描(词法扫描、语法分析、代码生成、代码优化)C当对一源文件进行编译时,系统将自 预处理程序对源程序中的预处理部分进行处理以得到目标代码。(C)。宏定义:不带参数的宏定义#define标识符字符 例:#definePI带参数的宏定 #define宏名(形参表)字符带参数的宏调用:宏名(实参表 例:#defineM(y)调用注:a.c.如:#include#defineSQ(y)((y)*(y)){inti=1;{//printf("%dn",SQ(i++));//输出为 注:对SQ(++i)首}}文件包一个源程序通过#include命令把另外一个源文件的全部内容嵌入到源程序中来。在编译格式:#include注:#include"file.h"首先在使用包含文件的源文件所的 #include<file.h>仅在编译系统指定的标 查找文件条件编#ifdef

#defineR#include<stdio.h>{double#ifdefr=3.14*c }指针型函指函数返回指针值的函数。格式:类型说明符*函数名([参数列表]){} #includein

温馨提示

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

评论

0/150

提交评论