学习目标:
再次认识关键字,尤其是typedef和static的使用方法
学习内容:
typedef 类型重定义
typedef unsigned int u_int;
int main()
{
unsigned int num = 100;
u_int num2 = 100;
return 0;
}
关键字static - 静态的
-
static修饰局部变量
-
static修饰全局变量
-
static修饰函数
void test()
{
static int a = 1;
a++;
printf("%d",a);
}
int main()
{
int i = 0;
while (i<10)
{
test();
i++;
return 0;
}
static修饰局部变量,改变了局部变量的生命周期(本质上是改变了存储类型)
内存
栈区:局部变量 函数的参数 |
堆区:动态内存分配 |
静态区:全局变量 static修饰的静态变量 |
static修饰全局变量
static int g_val = 2022;
//extern声明外部符号
extern int g_val;
int main()
{
printf("%d\n”,g_val);
return 0;
}
全局变量在整个工程中都可以使用
static修饰全局变量,使得这个全局变量只能在自己所在的源文件(.c)内部可以使用。其他源文件不能使用
全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性。但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了
static修饰函数
static int Add(int x,int y)
{
return x + y;
}
//声明函数
extern int Add(int , int);
int main()
{
int a = 10;
int b = 20;
int sum = Add(a,b);
printf("sum = %d\n",sum);
return 0 ;
}
使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用,本质上static是将函数的外部链接属性变成了内部链接属性
学习时间:
下午3-4点
学习产出:
- 博客
- 笔记
- 码云