




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
By unKnownC语言小结一、数据:C语言中的数据主要可以分为基本类型、指针类型、和派生类型(数组、结构体和共用体)。(一) 常量与变量:在C语言中数据的基本类型分为常量和变量,顾名思义,常量就是在函数执行过程中不可改变的量,变量即可以在函数执行过程中可以由用户或者程序员写入而改变的量。基本类型中又分为:整型、实型、字符型、枚举。基本类型的详细分类:整型:普通整型(int %d)、长整型(long %ld)、无符号整型(unsigned int)、无符号长整型(unsigned long int %ld)。输出一个无符号整型的下列类型分别以其后面的形式:十进制%d或%i十进制%0十六进制%0x实型:单精度浮点型(float %f)、双精度浮点型(double %f)。字符型:字符型(char %c)、字符串(不能定义一个字符串,%s);枚举型:定义枚举常量:enum 枚举名(成员1,成员2,成语3); 枚举的第一个成员对应数值0,第二个对应1,依次类推定义变量:类型 变量名;全局变量:在函数外部定义的变量是全局变量,任意一个函数都可以访问全局变量;局部变量:在函数内部定义的变量成为内部变量,只在韩式内部有效。(二) 数组:1. 数组的作用:如果你有一组类的数据,一个个起名字麻烦也没意义,用个数组保存 它们,用起来就方便一点。2. 数组的定义:类型 数组名数组长度;注:在对全部数组元素赋值可以不指定数组长度;3. 二维数组:类型 数组名数组长度 数组长度;4. 多维数组:类型 数组名数组长度 数组长度 数组长度数组长度; 5. 数组的引用:一维:数组名下标;注意: 1)假定一个数组的长度是n,数组的下标是用0开始,一直到n-1结束,2)数组的数据个数不能超过数组长度,如果超出之后会造成数据错误;3)数组在引用时数组名代表数组的地址;二维:数组名下标1下标2;多维:数组名下标1下标2下标n;6. 数组的初始化:数据的初始化实际意义就是给数组赋值; a3=1,2,3;(三) 指针:1. 指针的作用:每个网站都对应着相应的域名,但是其实每个网站最终都是以IP地址形式被访问,指针就好比是域名,而指针所对应的地址就是IP地址,在这个过程中,指针就相当于一个引路人。注意:指针是C语言灵活多变的体现,但是指针也非常危险,弱国使用不当很容易造成系统错误。2. 定义指针:类型 *指针名;/int *p;3. 引用指针:1)指针名=&变量名;/注:已经定义的变量在赋值的时候不加*; 若没有定义则,格式为:类型*指针变量名; eg. int*p;2)若已执行:指针名=&地址名;printf(“%类型简写”,*指针名);3)若已执行:指针名=&变量名;变量名=n(n为具体的一个值);printf(“%类型简写”,指针名);4. 指针的自加与自减:指针的自加与自减是地址的加减而不是所指向的地址的值的加减。(四) 结构体:结构体的作用:结构体和其他类型基础数据类型一样,例如int类型, char类型只不过结构体可以做成你想要的数据类型。以方便日后的使用。在项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。1. 定义结构体:struct 结构体名 类型 成员名1;类型 成员名2;. ;2. 引用结构体:1)struct 结构体名 类型 成员名1;类型 成员名2;. 变量名;2)struct 结构体名 变量名; /*在引用前必已经定义过结构体,VC+编译环境中可省略struct,*/3)struct 类型 成员名1;类型 成员名2;. 变量名; /只能使用一次;3. 结构体数组:1)struct 结构体名 类型 成员名1;类型 成员名2;. 结构体数组名;2)struct 结构体名 结构体数组名;; /*在引用前必已经定义过结构体,VC+编译环境中可省略struct,*/3)struct 类型 成员名1;类型 成员名2;. 结构体数组名;/只能使用一次;4. 结构体指针:1)struct 结构体名 类型 成员名1;类型 成员名2;. *结构体指针名;2)struct 结构体名*结构体指针名; /*在引用前必已经定义过结构体,VC+编译环境中可省略struct,*/3)struct 类型 成员名1;类型 成员名2;. *结构体指针名;/只能使用一次;5. 用结构体变量中成员的值:结构体变量名.成员名Eg.定义结构体student 中包含姓名,班级,学号;struct studentchar name20;char class20;char num20;stu;scanf(“%s” ,);struct student *p;定义一个结构体指针;=&;scanf(“%s”,p-name)和 是一样的;也可表示为p-name;(五) 共用体:1. 共用体的作用: 各个成员共用同一段内存空间,其所占用的空间为最大的成员的大,小一般用来节省内存。2. 定义共用体:union 共用体名 类型 成员名1;类型 成员名2;. ;3. 引用共用体:1)union 共用体名 类型 成员名1;类型 成员名2;. 变量名;2) union共用体名 变量名; /*在引用前必已经定义过结构体,VC+编译环境中可省略union*/3)union 类型 成员名1;类型 成员名2;. 变量名; /只能使用一次;/共用体的引用与结构体相似,而且现在程序员中对共用体使用也较少,所以就不做太多介绍二、语句:(一) 运算符和表达式:1. 逻辑运算符:优先级运算符含义结合方向1()圆括号自左向右方括号-结构体中指向结构体成员运算符结构体成员运算符2!非运算符自右向左取反运算符+自加运算符-自减运算符-符号运算符(非减号)(类型)强制类型转换*指针运算符(非乘号)&取址运算符sizeof长度运算符3*乘号自左向右/除号%取模4+加号自左向右-减号5右移运算符6 , ,关系运算符(比较数值大小)自左向右7=等号自左向右!=不等号8&按位与位运算符自左向右9按位异或运算符自左向右10|按位或运算符自左向右11&逻辑与运算符自左向右12|逻辑或运算符自左向右13?:条件运算符自右向左14=,+=,-=,*=,/=,%=,=结构体变量名;/*更直观的表示指针所指的内容;*/5. 条件表达式:逻辑表达式?表达式1:表达式2 /做简单的判断(二) 控制语句:1. 条件语句if语句:第 13 页 共 13 页if (判断表达式 ) 操作1;操作2; ifelse语句if(判断表达式)操作 1;操作 2;Else操作 1;操作2;ifelse ifelse ifelse语句if(判断表达式1)操作 1;else if(判断表达式2)操作2;else if(判断表达式3)操作3;.else操作 n;2. 开关语句:switch()switch(判断表达式) /判断表达式一般使用某个变量case 1:操作1;break;case 2:操作2;break;case n:操作n;break;default;操作n+1;break;3. 循环语句1)for(表达式1;表达式2;表达式3;)操作1;操作2;表达式1作用:先对表达式1赋初值表达式2作用:条件表达式,控制循环 表达式3作用:语句循环一次结束后所执行的条件2)while语句while(条件表达式)操作1;操作2; 3)dowhile语句do操作1;操作2;while(条件表达式)三个循环语句的特点:While, do-While语句的使用,它的循环条件的改变,要靠程序员在循环体中去有意安排某些语句。而For语句却不必。使用For语句时,若在循环体中想去改变循环控制变量,以期改变循环条件。While 循环,do-While循环适用于未知循环的次数的场合,而For循环适用于已知循环次数的场合。使用哪一种循环又依具体的情况而定。凡是能用For循环的场合,都能用While, do-While循环实现,反之则未必。4. return 被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定5. goto语句 :无条件转向语句,可以立即跳转到函数内部任意一条可执行语句。goto 语句容易容易造成函数可读性变差,慎用!6. continue结束本次循环,只结束本次循环,而不终止整个循环的执行继续语句7. break通常用在循环语句和开关语句中终止或跳出语句。三、函数:C语言是由函数组成的,其中必须有一个并且只有一个主函数 main,程序的执行从main 函数开始,到main 函数结束.(一) 系统定义:自定义函数名称函数:typedef 原函数名 新函数名typedef struct成员列表函数名;注:这样定义出来的函数是一种类型;输入输出语句:输入语句:scanf:可以输入字符或者数值;格式:scanf(“格式控制”,&输入列表);getchar:只能输入字符:格式:getchar(输入字符);/只能输入一个字符 输出语句:printf:可以输出字符和数值;格式printf(”格式控制”,输出列表);putchar:只能输出字符;格式:putchar(输出字符);/只能输出一个字符;字符串处理函数:puts(字符数组) /数组字符串 eg.puts(“China”);然后会在终端上输出China;gets(字符数组) /输入字符串 eg.gets(“China”);在系统终端就会得到Char这个字符串strcat(字符数组1,字符数组2);/把字符串2接到字符串1后面;strcpy(字符数组1,字符数组2);或strncpy(字符数组1,字符数组2);/将字符数组2的字符串复制到字符数组1中去;strcmp(字符串1,字符串2);/对字符串1和字符串2进行比较;在英文字母后面的大于前面的字母;如果字符串1=字符串2;输出0;如果字符串1字符串2;输出一个正数;如果字符串1字符串2;输出一个负数;strlen(字符串); /测试字符串长度:测试格式:char str10;/定义一个字符串;char str10=”china”;/初始化数组;printf(”%d”,strlen(str); /输出字符串长度为5;该函数可以测试字符串长度; strlwr(字符串); /将字符串中的大写转化为小写;strupr(字符串); /将字符串中的小写转化为大学;/*这些函数都是对字符数组(也就是所谓的字符串)进行数据处理的,在C语言中字符串引用挺多的*/(二) 自定义函数:1.定义函数的目的:自己定义函数的目的就是为了让函数更为直观,程序写完后就不管了,为了维护程序的方便,所以我们可以使用自定义函数让程序更为直观,让我们更清楚函数的功能,使程序的可读性更好;2.怎样定义函数:定义无参函数:类型名 函数名()函数体;或类型名 函数名(void)函数体;定义有参函数:类型名 函数名(形式参数列表)函数体; 定义空函数:类型名 函数名() 3.调用函数时的参数问题:形式参数:在定义函数时,函数名括号后的变量名成形参,在调用函数前,传递给函数的值将被复制到形参中。实际参数:在调用函数时,也就是真正使用一个函数是,函数名后面的参数为“实参”函数的调用这提供给函数叫做实参。实参是表达是计算的结果,并且被复制给函数的形式参数。4.怎样调用自定义函数:函数列表的一般调用形式:函数名(实参列表)具体调用方式:1)调用函数语句:int main()类型名 函数名(形式参数列表);函数名(形式参数列表);2).函数表达式:变量名=函数名(形式参数列表);Eg.c=max(a,b);3).函数参数:将函数作为另一个函数的实参;Eg.Printf(“%d”,max(a,b);5.递归调用:递归调用就是间接的调用自己。 main()Display(cName);return 0;void Display(*cNameArray);if()函数体;elseDisplay(*cNameArray); /间接的调用了自己。printf(“”);6.嵌套调用:简单点说就是函数里面的函数:eg. void 函数1();函数体;void 函数2();void 函数1();五、文件:1. 链表:是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。1) 链表的作用:随机存储,查找必须顺序引导查找,优点是增加新节点和删除节点方便,缺点是不能直接读取数据2) 链表的创建:链表又分动态和静态链表:静态链表:这种描述方法便于在没有指针类型的高级程序设计语言中使用链表结构静态链表的建立:Eg.#includestruct student() /建立结构体;int num;char name20;struct student *next; /必须指向自己;;int main()struct student a,b,*head,*p; /定义结构体变量a,b;=1;=2; a.num=11;b.num=22; /为结构体中的数据赋值; head=&a; /将a的地址赋给头文件; a.next=&b; /将a的节点赋给b的地址;b.next=NULL; /b作为末节点,不存放地址;p=head; /p也指向a;doPrintf (“%d%s”,p-num,p-name);p=p-next;while(p!=NULL); /输出数据;return 0;动态链表:在初始时必须分配足够的空间, 也就是空间大小是静态的, 在进行插入和删除时则不需要移动元素, 修改指针域即可,所以仍然具有链表的主要优点,链表结构可以是动态地分配存储的,即在需要时才开辟结点的存储空间,实现动态链接。动态链表的创建:#includestdio.h#includemalloc.htypedef struct student long num; float score; struct student *stu; /和静态链表不同,不是*next 而是一个指 针 student;student * creat();void main()student *head;head=creat(); /函数返回链表的第一个节点;return;student *creat() /定义函数由此函数返回一个指向表头的指针 student * tmp=(struct student *)malloc(sizeof(struct student); /开辟新单元; tmp-num=0001; tmp-score=100; tmp-stu=NULL; /对链表的单元 return tmp; /返回链表的值2. 文件的操作:1)什么是文件:文件是指相关数据的有序集合,这个数据集的名称就叫做文件名。文件的分类:所有的文件都通过流进行输入输出操作,与文本流和二进制流相对应,所以文件可以分为文本文件和二进制文件;文本文件:也称ASC文件。这种文件在保存时,每个字符对应一个字节,用于存放对应的ASC码。二进制文件:不是保存ASC码,而是以二进制编码方式来保存文件。2)文件的基本操作:文件指针:文件指针是一个指向文件有关的信息指针,包括文件名、状态、和当前位置。定义文件指针:FILE*point;打开文件:fopen(文件名,使用文件方式);文件使用方式含义r(只读)打开一个文本文件,只能读取数据w(只写)打开或建立一个文本文件,只允许写入数据a(追加)打开一个文本文件,并在文件末尾写入数据rb(只读)打开一个二进制文本文件,只能读取数据wb(只写)打开或建立一个二进制文件,只允许写入数据ab(追加)打开一个二进制文件,并在文件末尾写入数据r+(读写)打开一个文本文件,允许读和写w+(读写)打开或建立一个文本文件,允许读和写a+(读写)打开一个文本文件,允许读,或并在文件末尾写入数据rb+(读写)打开一个二进制文本文件,允许读和写wb+(读写)打开或建立一个二进制文件,允许读和写ab+(读写)打开一个二进制文件,允许读,或并在文件末尾写入数据关闭文件:fclose(文件指针);向文件读写字符:fputc 格式:fputc(ch,fp); /将一个字符ch写到fp所指向的文件中去。fgetc 格式:ch=fgetc(fp);/从fp所指向的文件读入一个字符并复制给chfputs 格式:fputs(字符串,文件指针) ;/给文件指针多指向的文件写入一个字符串fgets 格式:ch=fgets(字符串,n,文件指针);/从文件指针所指向的文件中读一个字符长度为n的字符串,并存到数组中fprintf 格式:fprintf(文件类型指针,格式字符串,输出列表);/将整型(输出列表)的值以格式xx(数据格式)的格式输入到文件指针所指向的文件中fscanf 格式:fscanf(文件类型指针,格式字符串,输入列表);/读入文件指针所指向的文件中的值输入列表的值;fread 格式:fread(buffer,size,count,fp);fwrite 格式:fwrite(buffer,size,count,fp);/*这个注释写个fread和fwrite:buffer:一个指针对于fwrite来说是要输出数据的地址(起始地址);size:要读入或者要写入的大小;count:要读写多少个size字节的数据项。fp文件类型指针。*/fseek 格式:fseek(文件指针类型,位移量,起始点);/移动文件内部的文职指针;其中“文件指针类型”指向所要移动的文件,位移量表示移动的字节数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新源抗疫测试题及答案
- 行政处罚考试试题及答案
- 车床考试题及答案
- 烟火经济面试题及答案
- 有机化学考试试题及答案
- 德育工作总结
- 22.2.2配方法(教学课件)数学华东师大版九年级上册
- 六年级英语下册Unit8Readingsigns练习(含答案)沪教牛津版(深圳用)
- 五年级上册英语单元测试卷-Unit3whatwouldyoulike人教PEP(含答案)
- 纸类垃圾焚烧处理方案(3篇)
- 煤矿其他从业人员培训课件
- 气管镜异物取出术护理配合
- 成长赛道法律专业
- 水上漂流项目安全风险评估报告
- 湖南省长沙市明德华兴中学2024-2025学年高一下学期第一次阶段考试英语试卷(含答案无听力原文及音频)
- DB11∕T1116-2024城市道路空间规划设计标准
- 路产业务知识培训课件
- 《交通项目评估》 课件10需求预测方法
- 智算中心社会效益分析
- 出诊服务制度
- 2025年药敏分析仪项目可行性分析报告
评论
0/150
提交评论