------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
二、typedef
1.作用:给已经存在的类型起一个新的名称
2.使用场合:
1> 基本数据类型
2> 指针
3> 结构体
4> 枚举
5> 指向函数的指针
static修饰局部变量的使用场合;
1.如果某个函数的调用频率特别高
2.这个函数内部的某个变量值时固定不变的
static修饰局部变量:
1> 延长局部变量的生命周期:程序结束的时候,局部变量才会被销毁
2> 并没有改变局部变量的作用域
3> 所有的test函数都共享着一个变量b
四、递归
递归的条件:
1.函数自己调用自己
2.必须有个明确的返回值
递归应用示例:
设计一个函数,用来计算b的n次方
预处理指令:
1.所有的预处理指令都是以#开头
2.预处理指令分3种
1> 宏定义
2> 条件编译
3> 文件包含
3.预处理指令在代码翻译成0和1之前执行
4.预处理的位置是随便写的
5.预处理指令的作用域:从编写指令的那一行开始,一直到文件结尾,
6.宏名一般用大写或者以k开头,变量名一般用小写
int main()
{
char *name = "COUNT";
printf("%s\n", name);
#define COUNT 4
int ages[COUNT] = {1, 2, 67, 89};
for (int i=0; i<COUNT; i++) {
printf("%d\n", ages[i]);
}
// 从这行开始,COUNT这个宏就失效
#undef COUNT
return 0;
}
二、typedef
1.作用:给已经存在的类型起一个新的名称
2.使用场合:
1> 基本数据类型
2> 指针
3> 结构体
4> 枚举
5> 指向函数的指针
typedef struct Student
{
int age;
} MyStu;
三、static和extern
static对函数的作用:
1> 定义一个内部函数
2> 声明一个内部函数
extern对函数的作用:
1> 完整地定义一个外部函数
2> 完整地声明一个外部函数
(extern可以省略,默认情况下声明和定义的函数都是外部函数)
外部函数:定义的函数能被本文件和其他文件访问。默认情况下所有函数都是外部函数
1> 默认情况下所有函数都是外部函数
2> 不允许有同名的外部函数
内部函数:定义的文件只能被本文件访问,其他文件不能访问
1> 允许不同文件中有同名的内部函数
// 声明一个test函数
// 完整地声明一个外部函数
// extern可以省略
// extern void test();
void test();
void test2();
int main()
{
test();
test2();
return 0;
}
static修饰局部变量的使用场合;
1.如果某个函数的调用频率特别高
2.这个函数内部的某个变量值时固定不变的
void test()
{
static double pi = 3.14;
double zc = 2 * pi * 10;
int a = 0;
a++;
printf("a的值是%d\n", a); // 1
static修饰局部变量:
1> 延长局部变量的生命周期:程序结束的时候,局部变量才会被销毁
2> 并没有改变局部变量的作用域
3> 所有的test函数都共享着一个变量b
static int b = 0;
b++;
printf("b的值是%d\n", b);
}
int main()
{
for (int i=0; i<100; i++) {
test();
}
test();
test();
test();
return 0;
}
四、递归
递归的条件:
1.函数自己调用自己
2.必须有个明确的返回值
递归应用示例:
设计一个函数,用来计算b的n次方
#include <stdio.h>
int pow2(int b, int n);
int main()
{
int c = pow2(3, 3);
printf("%d\n", c);
return 0;
}
int pow2(int b, int n)
{
if (n <= 0) return 1;
return pow2(b, n-1) * b;
}