1.函数指针
函数:int sum(int a,int b){return a+b;}
函数指针:int (*p)(int a,int b)=sum;
调用函数:int result=(*p)(1,3)
2.课后错误
scanf("%d\n",&a[i]);输入时不能有换行符
3.表达式A?表达式B:表达式C
A成立,选B,否则选C
switch(表达式)
{
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
default:
语句3;
}
4.while循环一次都不会执行
do-while循环不管任何情况都至少执行一次
5.break跳出循环 continue 直接执行下一条循环
6.储存类型关键字4个
auto:声明自动变量
extern:声明变量是在其他文件正声明(也可以看做是引用变量)
register:声明寄存器变量
static:声明静态变量
7.其他关键字4个
const:指定的当前的变量不可被改变
sizeof:计算数据类型的长度
typedef:用以数据类型取别名
volatile:变量在程序中可以被隐含的改变
8.<<左移 >>右移
9.int a[5]={1,2,3,4,5};
int *ptr=(int*)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
a代表地址a数组的首地址 &a代表去a整个数组的地址
10.所谓编译,就是单独检查每个源文件的语法是否合理
所谓链接,就是检查目标文件的关联关系,将相关连的目标文件组合在一起,生成可执行文件
11.#define PI 3.14
/*
.
.
.
.
*/
#undef PI
条件编译:在预编译时,根据条件来选择编译代码
#if defined()和#if !define()
判断是否定义,如果定义了条件为真
#if defined(MAX)
。。。。 code 。。。
#endif
函数:int sum(int a,int b){return a+b;}
函数指针:int (*p)(int a,int b)=sum;
调用函数:int result=(*p)(1,3)
2.课后错误
scanf("%d\n",&a[i]);输入时不能有换行符
3.表达式A?表达式B:表达式C
A成立,选B,否则选C
switch(表达式)
{
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
default:
语句3;
}
4.while循环一次都不会执行
do-while循环不管任何情况都至少执行一次
5.break跳出循环 continue 直接执行下一条循环
6.储存类型关键字4个
auto:声明自动变量
extern:声明变量是在其他文件正声明(也可以看做是引用变量)
register:声明寄存器变量
static:声明静态变量
7.其他关键字4个
const:指定的当前的变量不可被改变
sizeof:计算数据类型的长度
typedef:用以数据类型取别名
volatile:变量在程序中可以被隐含的改变
8.<<左移 >>右移
9.int a[5]={1,2,3,4,5};
int *ptr=(int*)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
a代表地址a数组的首地址 &a代表去a整个数组的地址
10.所谓编译,就是单独检查每个源文件的语法是否合理
所谓链接,就是检查目标文件的关联关系,将相关连的目标文件组合在一起,生成可执行文件
11.#define PI 3.14
/*
.
.
.
.
*/
#undef PI
条件编译:在预编译时,根据条件来选择编译代码
#if defined()和#if !define()
判断是否定义,如果定义了条件为真
#if defined(MAX)
。。。。 code 。。。
#endif