typedef unsigned int u_int;
int main(){
unsigned int num=100;
u_int num2=100;
return 0;
}
typedef-----类型定义或类型重命名
关键字static-静态的
1.修饰局部变量
#include <stdio.h>
void test(){
int a=1;//a是局部变量
a++;
printf("%d ",a);
}
int main(){
int i=0;
while(i<10){
test();
i++;
}
}
#include <stdio.h>
void test(){
static int a=1;
a++;
printf("%d ",a);
}//a被static修饰后,a没有销毁,生命周期变长,从栈区转为静态区
int main(){
int i=0;
while(i<10){
test();
i++;
}
}
运行结果:2 3 4 5 6 7 8 9 10 11
static修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)
2.修饰全局变量
//全局变量
int g_val=2022;
#include <stdio.h>
//extern 声明外部符号
extern int g_val;
int main(){
printf("%d\n",g_val);
return 0;
}
运行结果:2022
全局变量在在整个工程中都可以使用
//static修饰全局变量
static int g_val=2022;
#include <stdio.h>
//extern 声明外部符号
extern int g_val;
int main(){
printf("%d\n",g_val);
return 0;
}
static修饰全局变量,使得这个全局变量只能在自己所在的源文件(.c)内部可以使用
全局变量,在其他源文件内部可以使用,是因为全局变量具有外部链接属性,被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了
3.修饰函数
//函数
int Add(int x,int y){
return x+y;
}
#include <stdio.h>
//声明函数
extern int Add(int x,int y);
int main(){
int a=10;
int b=20;
int sum=Add(a,b);
printf("sum=%d\n",sum);
return 0;
}
运行结果:sum=30
//static修饰函数
static int Add(int x,int y){
return x+y;
}
#include <stdio.h>
//声明函数
extern int Add(int x,int y);
int main(){
int a=10;
int b=20;
int sum=Add(a,b);
printf("sum=%d\n",sum);
return 0;
}
static修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用
本质上:static是将函数的外部链接属性变成了内部链接属性(和static修饰全局变量一样)