1.转义字符
如果在字符串中要表示单引号'问号?,既可以用转义字符\'和\?也可以直接用字符’和?,而要表示\或"号则必须用转义字符\\和\"
2.初始化
初始化是一种特殊的变量定义语句,而不是一种赋值语句。
如: int a;
a=10;
3.表达式语句
1> 赋值语句就是一种表达式语句,因为“=”号也是一种运算符;
如: c=a*10+b
+ - * /是左结合的;而=是右结合的;
2> 运算符的优先级:!高于 */%+ -高于> >= < <= 高于 ==、!= 高于 && 高于||
4.隐性转换
C语言定义一系列隐性转换类型,如:
int minute=59;
printf("%f hour is %d", minute/60.0,60);
在表达式minute/60.0中,60.0是一个浮点数,/运算要求左右两边的操作数类型一致,而现在并不一致。这种情况下编译器自动把minute转换成浮点型。
5.字符编码
字符型常量或变量也可以参与运算,例如:
printf("%c\n",‘a'+1);
运行的结果是b
在ASCLL码中字符‘a’是97,字符‘b’是98 。根据隐性类型转换原则把字符‘a’转换成97,然后加1得到98
6.关于#include<>
在#include后的<>中添加头文件表示的是要在程序中使用函数的类型。要用printf()函数就要在头文件中添加stdio.h 要用数学函数就要在头文件中用math.h
如:
#include<stdio.h>
#include<math.h>
如果什么系统函数都不用,头文件可以为空,也能编译通过,但这个程序什么也做不了,如:
int main(void)
{int a=3;
int b=2;
return 0;
}
7.关于自定义函数
返回值的类型 + 符合标识符命名规则的函数名(参数列表)
注意定义变量时可以把相同类型的变量列在一起,但相同的类型的参数不能列在一起,如:
定义变量:
int a,b;
但如果在参数列表中写成如: int print_time(int hour,minute)就是错误的。正确写法是:
int print_time(int hour,int minute)
8. 关于main函数
int main(void)
在Old style C中的语法规则是写成 main(),其实这样会引起很多错误,在写代码时一律写成 int main(void),main函数的返回值是给系统看的。
所有的函数都必须先声明,后使用; 函数定义也是声明的一种,只不过是添加了函数体。
9. 全局变量与局部变量
1》局部变量可以用任意类型相符的表达式初始化。局部变量调用时分配存储空间,调用完释放存储空间。
2》全局变量只能用常量表达式初始化。全局变量的初始值要求保存在编译生成的目标代码中,所以必须在编译时就能计算出来。
例如: 这样定义全局变量时不对的: int minute=360;
int hour=miute/60;
在一个函数中定义的变量不能在另外一个函数中使用,遵循谁定义谁是用的规则。
10. 递归函数
直接或间接调用自己的函数称为递归函数。A——》B 或 A——》B——A的形式。
注意:递归函数一定要记得写Base case,否则函数将无限递归下去直至系统为程序预留的栈空间耗尽程序崩溃(段错误)为止。
如函数中: int factorial (int n)
{ if(n==0)
return 1; /* Base case */
else
return n*factorial(n-1);
}
1> 递归函数能实现循环语句的所有功能。
2> 写程序时尽量用以前的代码,不要重复写代码(难免会出错)。
3> 函数的封装
11. 关于if语句
1》if中的控制表达式中不能把==写成=,=表示的是赋值;
2》关系运算符的优先级高于等号运算符(== 和 !=)。
3》任何可以放语句的地方都可以放由{}括起来的语句块(Statement Block),语句块中也可以定义局部变量,就像函数一样。
12. scanf()语句中的 “”中不要写进去换行符\n
13. 关于循环(loop)
1》 循环由以下三部分组成:循环变量、累加器、循环体
2》 注意事项:1. 注意控制表达式能否为假,以防出现死循环
2.乘法累积时,累加器初值为 1
3.加法累加时,累加器初值为 0
14. do /while
注意do/while这种形式一定要在while后面加上;号,否则编译器无法判断这是一个do/while循环的结尾还是一个whlie循环的开头。写循环时一定要注意循环即将结束时的控制表达式的临界值是否正确。
15. 嵌套循环
嵌套循环关键在于找到内层循环的循环变量和外层循环的循环变量之间的联系。
16. 结构体
1》结构体初始化,如: struct complex_struct Z1={3.0,4.0};
2》不能这样对结构体赋值:struct complex_structZ1;
Z1={3.0,4.0};
3》结构体类型的值用在表达式中有很多限制,比如:+ - * /等算术运算符和逻辑运算符都不能用于结构体类型。if / while控制表达式的值也不能是结构体类型。
17. 关于制表符 \t
\t和空格键的效果一样,不过\t相当于四个空格。