-
学习前需了解的知识点
内存分配
static
1.static 修饰局部变量
本质上:(1)static 修饰局部变量使得变量的存储位置发生了变化(2)本来局部变量是放在栈区,被static修饰后,放在内存的静态区,感觉是生命周期延长了(3)作用域没有发生变化
void test()
{
int a=2;
a++;
printf("%d ",a);
}
int main()
{
int i=0;
while(i<5)
{
test();
i++;
}
return 0;
}
//结果为:3 3 3 3 3
- a是一个局部变量,进入函数创建,出了函数就会销毁(将空间还给操作系统)
- 每次进入函数会重新创建
void test()
{
static int a=2;
a++;
printf("%d ",a);
}
int main()
{
int i=0;
while(i<5)
{
test();
i++;
}
return 0;
}
结果为:3 4 5 6 7
- static修饰局部变量,使得局部变量出了作用域并不销毁(空间不会回收),下一次进入函数,依然使用的是上次留下的值
- 如果反复使用这个函数,会产生累积的效果
2. static 修饰全局变量
- 编译器的工作原理
- 一般情况
- static修饰后
原因:(1)static修饰全局变量后,使得这个全局变量只能在自己所在的源文件内部使用,其他源文件无法使用
(2)一个全局变量是具有外部链接属性的,只要合理的声明,全局变量在其他源文件内部,也可以使用,但被static修饰后外部链接属性就变成了内部链接属性,只能在自己所在的源文件内部使用
3.static 修饰函数
- 一般情况
- static修饰
原因:同上
typedef
typedef是类型定义,理解为类型重命名
typedef unsigned int uint;
//typedef可以让复杂的类型简单化
int main()
{
unsigned int num=1;
uint num2=1;
return 0;
}