1.运算符的优先级和结合性
2.数据类型转换:①整型提升②float一律转换成double(有效数字float 6、7,double15、16)③
3.应避免对实数做相等或不等的判断,如1.0/3.0*3.0==1.0结果为0,可以用fabs(1.0/3.0*3.0-1.0)<1e-6,
4.stdio.h 标准输入输出函数
scanf遇空格、回车、跳格键时 结束输入数据(常量),输入字符型时则把空格、回车当做字符输入
gets(s),s为字符串变量(字符串数组名或字符串指针),遇到 回车键 认 为输入结束
非标准格式化输入输出函数 编译后代码少,相对占用内存也小
5.闰年 if ((year % 4==0 && year %100!=0) || (year % 400==0))
6.break 跳出本层循环 或 switch 语句
continue 结束 本次循环
goto 语句标号
7.高次方程一个实根的近似值的牛顿法 Xn+1=Xn-f(Xn)/f ' (Xn)
8.数组:①只能逐个引用数组元素而不能一次引用整个数组,,字符数组可以用数组名进行输入输出
②二维数组是行排列的
9.字符串处理函数:①puts②gets③连接函数strcat④复制函数strcpy⑤比较函数 strcmp⑥测试长度函数 strlen(实际长度,不包括'\0')
10.函数:①以源文件为单位进行编译
②所有函数都是平行的,不能嵌套定义但可以嵌套调用、递归调用
③程序运行从主函数main开始,分配栈内存,被调用函数运行到 return时,函数返回值存入 临时内存单元,退出被调用函数,被调用函数 栈内存自动撤销
④形参变量只有 在被调用时才分配内存
⑤ 递归算法简洁,但占用内存较大
⑥数组作为函数的参数:数组元素vs数组名,用数组名做参数时 ①形参数组和实参数组为同一数组,共同拥有一段内存空间②形参数组变化时,实参数组也变化
③类型必须一致,长度可以不相同
(7)局部变量和全局变量 :按作用域范围划分①局部变量也称内部变量,函数或 复合语句②全局变量也称外部变量,extern,作用域从定义开始到源程序文件结束为止; 在函数之前定义不用加extern ③C语言规定函数的返回值只有一个,当需要增加函数的返回数据时,用外部变量是很好的方式 ④外部变量的定义 必须在所有函数之外,外部变量的说明 .....
(8)存储类型:变量的生存期auto register extern static,注意:静态局部变量 系统自动赋0, 自动变量不赋初值,生存期为整个源程序;;静态全局变量限制了其作用域,即只在定义该变量的源文件内有效
(9)内部函数和外部函数
11.编译预处理:宏定义、文件包含、条件编译,不是C语句
带参数的宏定义 #define 宏名(参数表) 替换串 undef
条件编译 #ifdef 标识符
12.return语句不可返回指向“栈内存”的“指针”,因为该内存在函数体结束时被自动销毁。
exit()函数函数声明:void exit(int state); exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。
13.这是因为C语言里函数的参数默认是从右往左处理的,输出时是从左往右。eg) printf 中的参数含有赋值表达式时 ,放在后面的会影响前面的输出
14.main()的返回类型,因为“int”返回类型会让程序返回状态值。这点非常重要,特别当程序是作为依赖于程序成功运行的脚本的一部分运行时。
15.内存泄露:
16.free()函数,小心程序中 指针的变化