C语言的重点
- C语言中定义的规则
流程图(flow chart) 起止框 输入输出框 处理框 判断框 循环 - 软件开发过程:1确定程序要求 2.设计与开发(1.分析问题 2.选择一个全面解决方案算法 3.编写程序4.测试并改正程序)3.文档编制 4.维护
- Supply(提供) standeard library(标准库) identify(标识符) reserverd word==keyword(保留字关键词) executable(可执行的) statement(语句) invoke(请求)Escape character(转义符) sequence(序列) variable(变量) argument(实参) decrement operator(运算符) literal date(字面数据) pretest loop(前测试循环) posttest loop(后测试循环) recursive(递归) cimponent(成分) element(元素)
- 程序员创建的标识符的规则:1标识符首字母必须是字母或者下划线 2.只有字母,下划线,数字可以跟在首字母之后,不允许有空格 3.标识符不能是保留字
- 所有语句执行必须从main函数开始
- C语言中用于标注的办法单句标注//,多句标注/……./
- 基本数字数据类型:整数类型(char(1) short int(2) int(4) long int(4) unsinged short int(2)) 浮点型(float(4) double(8) long double(8))
- 常见的ASCII码’\0’, ’\n’, ’\t’ :转移控制符 转义字符:\n换行符 \0空字符
- Scanf,printf的输入要求
printf(“ “);printf(“%d%s%c%f”,1,st,a,3.2 );scanf(“%d%f”,&num,&ave); - 算数,关系,逻辑运算符的优先级以及运算方向
- 加减乘除从左往右
- 自增自减,指针运算符,& 优于加减乘除
- 大小判断<= >= < >等等优于== ,!=
- =、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符只优于,
- ++,–前置与后置的区别
前置先进行加一在对加一之后的值进行其他运算,后置先进行运算,运算过后再加一 - Function prototupy与function headline的区别:函数的声明语句称为函数原型,在声明括号里面只需标注出传递参数的类型,如(float,float);调用语句中的参数称为实参;函数首行部有用来声明返回值类型,传递数据的作用,在函数首行部里面的数据称为形参
- 循环的四大元素:循环语句 条件式 初始值 改变语句
- 语句有哪些控制结构:顺序(sequential)选择(selection) 循环(erpetition)调用(invocation)
- 数组的表达方式 grade[0], *gptr, *grade, *(gptr+1)
- 数组作为参数向函数传递的方法:在函数原型声明里面表明数组数据类型;在函数首部里面声明一个新的数组名称以及大小;再调用函数的括号里面写入需要传递的数组名称
二维数组传递可以忽略第一维的大小,但是不能忽略高维的大小因为从实参传递来的是数组的起始地址,如果在形参中不说明列数,编译器将无法定位元素的的位置。
正确示例void find(char a[3][10]),void find (char a[][10]);错误示例void find(char a[][]),void find(char a[3][]) - 字符串的本质:字符数组+‘\0‘==字符数组+0;可以用\0判断字符串的结束,输入方法可以用gets,scanf循环,用EOF或者\n的while循环中用getchar输入字符串有关的库函数在string.h中,常用的函数有strlen计算字符串长度不包括\0,strcpy将后面的字符串复制到前面字符串,strcat将字符串复制到另一个字符串;在ctype.h库函数中的函数:toupper将小写字符转化为大写字符,tolower将大写字符转化为小写字符。
- 数组名称可以作为指针变量:一维数组的两种不同表示方法arr[0]*arr;arr[1](arr+1),二维数组的三种表示方法:arr[0][0]==(arr)*arr[0],arr[0][1](arr+1)==(arr[0]+1),
arr[1][1]((arr+1)+1)*(arr[1]+1) - 运用文件操作的基本流程:1.声明一个文件流(FILE*infile)2.打开一个文件流(outfile=fopen(“prise.txt”,”w”)),w的作用为写入创建一个文本文件,并会删除之前的内容,r为读取打开一个现存的文本文件,a的作用是在原本文件的后面输入文本,若文本不存在,则会创建一个新的文件 3.关闭文件流(fclose(outfile))
写入文件内容方法:把字符写入字符串(fputs(c,filename)),把字符串写入文件(fputs(string,filename)),按照格式把参数数值写入文件(fprintf(filename,”format”,args))
读取文件:读取字符串(fgets(c,filename)),读取字符串(fgets(string,filename)),读取文件参数(fscanf(filename,”format”,&args)) - 怎样定义结构体以及对结构体变量赋初值:1.声明结构体
Struct
{
Int month;
Int day;
Int year;
}birth={1,2,3};
赋值操作:struct birth={1,2,3};进行传递结构时也可以传递结构体变量的地址给函数,在传递结构体时,要函数原型包括函数首部的括号里面要表明为结构体类型的数据。
传递结构以及返回结构:单一结构成员传递时可直接结构变量名加成员名进行传递即可 - 变量作用域以及储存类型:各种储存类的区别和使用auto static extern register
局部变量储存类:Auto默认储存类; static静态储存类,整个程序始终保持这个变量的值,每次调用或者执行此变量时,局部静态变量都不会被破坏 ;register 寄存器类在声明式被创建,而在完成函数时就会被自行销毁他的数据的储存区被称为寄存器register 全局变量储存类:static和extern extern储存类的作用是将一个源代码文件中的全局变量的作用域扩展到另外一个源文件中去。 - Int *calc(), 返回整型指针 int (*calc)( )指向一个返回整型值的指针
- 结构体指针的使用方法(*pt).idnum==pt->dinum
- 隐式类型转换:赋值运算符两边自动根据一定规则进行的数据类型转换称为隐式类型转换
- 显式类型转换:根据需要将一种数据类型强制转换为另外一种数据类型称为显式类型转换
- 数学库函数:sqrt()平方根,pow()次幂运算,exp()e自乘x次幂,log()x的自然对数,log10()
- 格式修饰符:左对齐:printf(“%-10d”,59);显示为59^^^^^^^;当为了明确显示符号可printf(“%+10d”,59);显示为^^^^^^^59;显示十六进制%x,运算中要用到十六进制数时,要在十六进制数前面加0x,显示八进制用%o,运算中用到八进制数时,在八进制数前面加0;如果要强制十六进制和八进制数分别以0x和0开头输出,则必须用#格式修饰符,printf(“%#o %#x”);
- Switch语句
switch(n)
{
case (x1): …… break;
case (x2) : …… break;
default : …………
} - EOF语句,按下CTRL和Z键时,系统会转化为EOF,可以用此来结束循环
- break与continue 语句:当遇到符合continue语句的条件是,这回执行continue语句,从continue截断,返回到最初重新开始循环;当遇到符合break语句的条件时,便会结束循环,执行下一个语句
- 传递地址给函数的方法称为函数按引用传递,函数可以通过地址直接调用或者访问这个函数 步骤1.声明指针变量2.将要传递的值的地址赋值给指针变量3.定义函数里面的指针变量4.将地址传递给函数
- 递归:函数对自身进行调用的方法叫做递归,这类函数也称为递归函数或者自引用函数
- 指针数组:int *num[3],char *name[3],
- 联合是一种保留两个或多个变量在内存的相同区域的数据类型,这些变量可以是不同的数据类型,联合可以将一个联合变量内部不同数据类型的成员放入同一内存区。联合有效的保留充分的内存位置,以适应他的最大成员的数据类型