c语言零散知识点总结.doc_第1页
c语言零散知识点总结.doc_第2页
c语言零散知识点总结.doc_第3页
c语言零散知识点总结.doc_第4页
c语言零散知识点总结.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1. 标识符的名称只能由数字、字母、下划线组成,但数字不能放在开头;标准字符(关键字)不能作为标示符名称;C语言中大小写是有分别的。2. 常量的定义:#define price 30 (定义符号常量price的值为30)通常大写字母表示常量,小写字母表示变量;C99中,用const int z=0 来定义3. 整型常量:十进制数字0-9非0数字开头八进制数字0-70数字开头十六进制数字0-90x或0X开头字母a-f(A-F)“+”,“-”表示正负,数后面加u或U表示无符号整数,加上字母l或L表示长整型数整形变量:整型数据在内存中以二进制补码的形式存放。4.浮点常量:小数形式0-9和小数点0.15 123.45指数形式0-9,小数点,+号和e/E3.14e+002,5.0e-002默认为double,后加f/F表示float型。浮点变量:浮点型数据在内存中以指数形式存储。4. 字符常量:( )括起来的一个字符,I、a、?但不能是()和(),以ASCII的形式存储。语句中可像整数一样参与运算。字符串常量:用“ ”括起来的一串字符,同样不包括(” ”)和();系统自动在末尾加上0。转义字符:a响铃7b退格8f换页12n换行10r回车(回当前行首)13t水平制表9v垂直制表1100字符0字符92字符39”字符”34ddd八进制表示的ASCII码三位八进制xhh十六进制表示的ASCII码两位十六进制5. 关系与逻辑运算符:先非后与再或;不等关系先于等和不等于。&按位与按位反|按位或按位右移按位异或(不同为1)按位左移6. 表达式值的类型:DoubleFloatLongUnsignedIntShortChar6. 赋值表达式:赋值表达式的值又可以作为另一个赋值表达式,如:a=(b=10)相当于“b=10”,“a=b”,所以a的值也为10。注意:计算a+=a-=a*a (a=12) a=-2647.短路表达式:a&b&c 只有在a为真才判断b的值,a,b皆真才判断c的值 a|b|c 只有在a为假才判断b的值,a,b皆假才判断c的值7. 标准输出:格式字符:c按字符输出d按十进制整数输出u十进制无符号输出f按浮点数输出E/e按指数形式输出o按八进制输出X/x按十六进制输出s按字符串输出g按e,f中较短的一种输出修饰符:m输出数据长度;长度小于m,左补空格;否则实际输出.n实数,指定小数点后位数(四舍五入);字符串,指定实际输出位数-输出数据在域内左对齐+指定在有符号数整数前显示正号0输出数值指定左面不用空位自动填0#在八进制和十六进制数前显示0,0xl在d,o,x,u前输出long型,在e,f,g前,输出double型putchar(ch);=printf(“%c”,ch);getchar();从键盘键入一个字符8. 条件语句If语句:if(表达式) if(表达式) 语句序列 语句序列1 else 语句序列2 switch多分支语句:switch(表达式) case E1:语句序列1; case E2:语句序列2; case En:语句序列n; default:默认语句序列; Switch后的表达式的值必须是整型或字符型,Ei的值必须不相同,case后多条语句可以不加,允许多个case使用同一语句序列,如:case 1:case 2:case 3:printf(“hello,worldn”);注意每个case后有无break,有则跳出,否则继续执行到break或switch结束。9. 循环语句While(表达式) do 语句序列 语句序列 while(表达式); /注意,不同于pascal,为真时继续做/For(表达式1;表达式2;表达式3)语句序列Continue:只用于循环结构,提前结束本次循环,进入下次循环。Break:直接跳出这层语句。用于switch和循环结构。复合语句是用界定的语句块。10. 函数的原型声明结尾有“;”,函数的定义结尾无“;”11. 形参只能是变量,只在被调用时分配地址单元,调用结束即释放,只在函数内部有效。 实参可以是常量、变量、函数、表达式,进行调用时必须有确定的值。实参与形参在数量、类型、顺序上严格一致12. return 表达式=return(表达式) 函数中允许有多个return但一次只有一个return被执行;void函数中可以无return或return后无表达式。13. 全局变量与局部变量重名时,只有局部变量起作用。在外部定义的全局变量,不加说明即可在函数内调用,但作用域为定以后的各个函数。加上extern说明,可以在其他源文件中使用。14. 变量的存储类型:动态存储:函数调用时分配存储空间,调用结束即释放。静态存储:,运行期间有系统分配固定的存储空间,定义和初始化在编译时进行。局部变量外部变量AutoRegister静态局部静态全局外部变量动态存储静态存储动态存储区间寄存器静态存储区间函数开始至结束函数整个运行期间变量作用域为定义的函数内或复合语句内本源文件其他源文件本函数运行期间赋初值编译时赋初值不赋初值,其值不确定自动赋为0或空字符注意:2.如果形参实参类型不一致,以形参类型为准。15.sizeof(数组元素的数据类型)*数组长度=总字节数数组的集合式复制只能用在初始化时,有元素未赋值,则其值为0。数组长度=sizeof(数组名)/sizeof(数组名0) (若在前面有static关键字修饰,即便未初始化,系统也自动为个元素初始化为0)15. 数组参数:数组的参数传递为地址传递,因此,在函数中用语句对数组的操作会改变实参十足的内容。若引用前加上const,则可避免改变实参数组。引用时,形参写成int a 或int *a 实参写成max(a,i,n) 16,字符数组:for(i=0;i80&(linei=getchar()!=n;i+);while(linei+=getchar()!=n);未赋初值的元素其值为任意字符。字符串处理函数:Strcpy(char *s,char *t)把t复制到s,返回s的指针Strncpy(char *s,char *t,int n)把t中至多n个字符复制到s中,if tn只连接前n个字符,返回s的指针Strcmp(char *s,char *t)比较s和t的字典顺序,st返正值Strncmp(char *s,char *t,int n)从首位开始,拿s中至多n个字符和t逐元素进行比较,st返正值Strlen(char *s)计算s中字符个数,不包括0字符Strlen(“Hello”);结果是517.任何一个指向能存储数据的内存位置的表达式称为左值。常量、算术表达式的结果都不是左值。每个左值都存储在内存中,必有地址。一诞声明左值,其内容可以改变,但地址永远不能改变。指针变量必须先被赋值才有意义指针的初始化:Int m=3; int *ptr,m=3;Int *ptr=&m; ptr=&m;或者用 double *p1=0; 或int *p2=NULL;来初始化。18.指针变量做参数的函数:Void swap1(int *,int *); /声明Void swap1(int *pt1,int *pt2) /定义返回指针的函数:类型名 * 函数名(参数表);Int *fun(int x,int y);19.指针与数组:Int a10,*ptr=a;其中ptr+n=a+n=&an ptrn=*(ptr+n)注意:printf(“%4d”,*ptr+)表示先输出指针指向的变量的值,然后指针变量+1。a1+2=&a12=*(a+1)+2&aij=ai+j=*(a+i)+j;aij=* (ai+j)=*(*(a+i)+j);数组指针作为函数的参数:引用部分:input(a); 定义部分: void input(int x)实参形参数组名数组名数组名指针变量指针变量数组名指针变量指针变量20.指针与字符数组:定义方法:char str80,*p=str;注意:除了初始化外,不能将一个常量字符串赋值给字符数组,但可以赋值给字符指针,含义仅仅将常量字符串首地址赋给字符指针。字符指针必须初始化后才能使用(既要有一个明确的指向)。Ptr1=(char*)malloc(30); /动态为指针分配一个30字节的存储空间/free(ptr1);21.指针数组:类型名 *数组名数组长度;指向指针的指针: 类型名 *指针变量名Main函数的参数Int main(int argc,char *argv);Argc是启动命令行中的命令行参数的个数,argv是指向一个字符指针数组,有argc+1个指针(最后一个为0)定义含义Int i定义整型变量Int *p=&i指向i的指针Int an含n个元素的数组aInt *pnN个指向整型变量的指针变量组成的数组pInt (*p)n指向含n个元素的一维整型数组的指针变量Int f()函数fInt *p()返回指针的函数pInt (*p)()指向函数的指针变量pInt *p指向指针的变量p22.宏定义:#define 宏名 宏定义串#define M(y*y)#define 宏名(参数表) 宏定义串#ddefine M(y) y*y+3*yK=M(5)23.#include “stdio.h” 首先在当前原文件目录中查找,再到包含目录中查找#include 直接在包含目录中查找一个include只能定义一个被包含为文件24.条件编译#ifdef 标识符 #ifndef 标识符 程序段1 程序段1 #else #else 程序段2 程序段2 #endif #endif25.结构体:Struct 结构体名成员项列表student1,student2;Struct 结构体名成员项列表;Sturct student stu,*p1,*p2;P1=&stu;P2=(struct student*)malloc(sizeof(struct student);(*结构体指针名).成员名=结构体指针名-成员名 Ptr=&student1 p指向结构体变量Struct student stu3Ptr=stu p指向结构体数组的元素26.链表:Struct Node Char name20; Long number;Char sex;Struct Node *next;共用体:Union 共用体名 成员列表共用体变量名; 各成员占用同一段内存单元,每个时刻只能保存它的某一个成员的值。枚举类型:Enum 枚举名枚举值表;如enum Weekdaysun,mon,tue,wed,thu,fri,sat;定义时 可以enum Weekdaysun,mon,tue,wed,thu,fri,sat; enum Weekday a,b,c;或enum Weekdaysun,mon,tue,wed,thu,fri,sata,b,c;或enum sun,mon,tue,wed,thu,fri,sata,b,c;枚举值都是常量,不能用赋值语句对它进行再赋值 上例中sun值为0mon为1sat为6只能将枚举值赋给枚举变量 a=mon;不能将元素的数值直接赋给枚举变量,a=0就是错的。一定要用强制类型转换 a=(enum Weekday)2;相当于a=tue;自定义类型:Typedef 原类型名 新类型名 如typedef int INTEGER;又如 typedef char NAME20NAME a1,a2,a3,a4; /每个都是20格的字符数组位域:Struct 位域结构名类型名 位域名:位域长度;例如:struct bitsec Int a:6;Int b:2;Int c:8; data; /data占2个字节,位域8,2,6位赋值不超过位域允许范围(可进行位运算)。文件:Int Fclose正常关闭文件时返回0,出错时回EOF(即为-1)Int Feof若返回非0数,则文件指针已指向文件的结尾Int fgetc从当前位置返回一个字符,若已到文件结尾,返回EOFInt fputc将字符写入当前位置,返回输入字符的值,出错返回EOFChar *fgets(char*str,int num,FILE *stream)读取至多num-1个字符,放入str所指向的字符数组,直到遇见回车或文件结尾EOFChar *fgets(char*str,FILE *stream)将str所指字符串写入流文件,成功返回0,失败返回非0值Int Fseek(FILE*fp,long offset,int origin)offset为正向下移,为负向上移0从文件头开始1从指针位置开始2从文件末未开始Void rewind(FILE*fp)重返文件起始位置Long ftell(FILE*fp)返回文件指针当前位置Int ferror(FILE *fp)返回0未出错,非0操作失败Size_t fread(void *pointer,size_t size,size_t num,FILE*fp)从pointer所指向位置存贮num个数据,每个大小为size,存贮区域=num,返回实际输入个数,用feof检查是否出错Size_t fwrit

温馨提示

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

评论

0/150

提交评论