静态
static修饰局部变量
一般用在方法中,比如我们建立一个10次的循环,每次调用一个方法,打印内部的变量自增
void add() {
int count = 0;
count++;
printf("%d\n",count);
}
int main() {
//static修饰局部变量,可使它不会销毁,下次调用还是上次剩下的值
for (int i = 0; i < 10; i++) {
add();
}
return 0;
}
结果:
全都是1,因为每次调用完方法后,变量就跟着方法一起销毁了,每次再调用就得从新初始化赋值
但如果我们加上静态修饰符 static
void add() {
static int count = 0;
count++;
printf("%d\n",count);
}
int main() {
//static修饰局部变量,可使它不会销毁,下次调用还是上次剩下的值
for (int i = 0; i < 10; i++) {
add();
}
return 0;
}
结果:
变量没有被销毁,每次都保留了下来
static修饰局部变量,可使它不会销毁,下次调用还是上次剩下的值
static修饰全局变量
全局变量可以被其他文件引入,这样很不安全,所以当我们加上静态修饰符时,使全局变量无法被外部文件链接到,提高安全性
static修饰全局变量,使其他文件链接不到它
static修饰函数
与全局变量一致,使外部文件无法链接到被静态修饰的函数
static修饰函数,使其他文件链接不到它
全局变量和函数本质上具有外部链接属性的,但被静态修饰后,就失去了外部链接属性,变为内部链接属性
typedef
用于简化定义变量类型的前缀
如: int char double 这些变量 类型都是一个单词,还方便写一点
但 unsigned int 无符号整型 这种变量,每定义一次都要写大量前缀,所以我们可以用typedef来定义
typedef unsigned int unit;
int main() {
unit a = 0;
return 0;
}
这样用unit定义的变量就与用unsigned int 定义的变量一致,减少代码量
define 定义
与定义函数效果类似,但简便很多
#define Add(x,y) ((x)+(y))
int main() {
//#define Add(x,y) ((x)+{y)) 与求和函数一样
//宏是没有类型的,宏是替换的,函数是传参
int a = 5;
int b = 3;
int c = Add(a,b);
printf("%d",c);
return 0;
}
结果:
注意宏的参数时无类型的
标签:count,语言,int,第五,static,修饰,新手,全局变量,链接 From: https://blog.csdn.net/qq_69225420/article/details/139606894