1 malloc 函数
2 static局部变量
2.1静态局部变量
# include<stdio.h>
void foo() {
	static int count = 0; // 定义静态局部变量
	count++;
	printf("count = %d\n", count);
}
int main() {
	foo();
	foo();
	foo();
	return 0;
}
在上面的例子中,count是一个静态局部变量,它的值在函数调用之间是保持不变的。每次调用foo函数时,count的值都会加1。
 
2.2 静态全局变量
// file1.c
# include<stdio.h>
static int count = 0; // 静态全局变量
void foo() {
	count++;
	printf("count = %d\n", count);
}
// file2.c
#include <stdio.h>
extern void foo(); // 声明函数
int main() {
	foo();
	foo();
	foo();
	return 0;
}
 这里count是一个静态全局变量,
这里count是一个静态全局变量,
extren 是一个关键字,声明一个变量或函数是在其他文件中定义的。
 这段代码中,extern void foo();声明了一个函数foo(),这是在文件file.c中定义的。这样在main()中函数就可以调用函数foo()了
 需要注意的是,extern关键字只是声明了变量或函数的存在,而不是定义。在本例中,函数foo()的定义在另一个文件中,因此编译器在编译main()函数时并不知道foo()函数的具体实现,只有在链接时才会将foo()函数的定义与main()函数的调用连接起来。
3 静态函数的用法
#include<stdio.h>
static void foo() {
	printf("hello,world!\n");
}
int main() {
	foo();
	return 0;
}

4 静态结构体成员
#include<stdio.h>
// 静态成员变量属于类
// 结构体不是类
// 因此 结构体 不能包含 成员函数、静态成员变量
// 要在 结构体 中使用 静态成员变量 可在结构体外定义全局静态变量
struct Person {
	char name[20];
	// static int age;
};
 static int age;
int main() {
	struct Person p1 = { "Tom" };
	struct Person p2 = { "Jerry" };
	printf("%s's age is %d\n", p1.name, age);
	printf("%s's age is %d\n", p2.name, age);
	age = 20;
	printf("%s's age is %d\n", p1.name, age);
	printf("%s's age is %d\n", p2.name, age);
	return 0;
}




















