1.逗号表达式的值是最后一个表达式的值,且逗号运算符优先级最低
2.字符输入输出:putchar(ch);ch=getchar();
3.switch语句格式:
switch(表达式)
{
case constExpression 1:statement 1;
case constExpression 2:statement 2;
...
default: statement n;
}
switch语句执行方式:找到入口标号后不再判断,顺序执行,因此必要时要加break语句。
4.读入一行字符串的方法:
gets函数
char str[10];
gets(str);
注:gets会造成缓冲区溢出,覆盖其它的正常数据,所以慎用。(用其它方法)
5.函数参数传递为值传递,数组名传递为首元素地址传递,二维数组则不可省略第二维。
6.变量的存储类别:动态存储和静态存储。
动态存储区:1形式参数2未加static的局部变量,函数调用时的现场保护和返回地址。
(1).auto:自动存储类别,动态分配存储空间,可以生省略
(2).static:静态局部变量,静态存储类别,赋初值仅第一次有效,外部程序不能引用
(3).register变量:直接放在寄存器中,(了解,没有必要使用)
(4).extern声明外部变量:
1.在一个文件内:在全局变量定义前使用它,要用extern声明,起到拓展其作用域的作用,类似函数名声明。 (没有必要使用)
用法:extern A;A...;int A;
2.多个文件的程序中:一个文件中定义,其它文件中用extern声明,应当慎用。
(5).用static声明外部变量:静态外部变量,如static int A,禁止其它文件引用,避免误用。
7.内部函数和外部函数
(1).内部函数:static int func(int a,int b) 作用:使函数作用域局限于本文件。
(2).外部函数:extern int func(int a,int b) 表示其它文件可以调用,C语言默认都为外部函数,所以可以省略 extern,调用时用extern对函数声明,extern可以省略。
8.宏定义
(1).不带参数的宏定义 #define 标识符 字符串 编译是“宏展开“:将宏名替换成字符串 #undef 种植宏定义作用域
(2).带参数的宏定义 #define 宏名(参数表) 字符串,形参外面常加括号,保证正确。
9.文件包含
原理:编译预处理时,将所包含的文件复制到主文件中成为一个程序一次编译,不是分别编译。
10.条件编译
(1).
# ifdef 标识符
程序段1
# else
程序段2
# endif
举例说明:
# ifdef DEBUG
......
# endif
/*define the way using 64bits interger in different OS*/
# ifdef WIN
#define LL _int64
#define LD "I64d"
# else
#define LL long long
#define LD "lld"
# endif
LL a;
scanf(LD,a);
printf(LD"\n",a);
(2).# ifndef 与上面类似
(3).
# if 表达式
程序段1
# else
程序段2
# endif
11.指针