文章前言:
今天学习了解了下关键字,分享下学习是的理解与心得吧
好耶!
文章目录
static修饰全局变量!改变了变量的作用域
一.关键字
名称 | 作用 | |
auto | 自动 | int a=10;=auto int a=10(隐藏auto) a是局部变量 局部变量前面都会有个auto 也叫自动变量 出了范围自动销毁 |
break | 跳出循环 停止循环 | 在循环里和Switch语句里使用 |
extern | 引用 | 引入外部符号 |
register | 寄存器 | 计算机存储数据 寄存器读取速度最高 放寄存器里=register int a=6(建议把a定义寄存器变量) |
sighed | 有符号数 | int a=10; a=-2; int 定义的变量是有符号的 int=sighed int 只是把sighed省略掉了 |
unsighed | 无符号数字 | unsighed int num=0;如果一个数字没有符号位的话那它就不存在正数之分,永远都是正数 如果定义num=-1 那它任然是一个正数 因为无符号 |
struct | 结构体关键字 | 如果要定义一个结构体 那么在主函数外面定义 struct book { }; |
define | 定义 | 定义常量 #define MAX 10 |
typedef | 改名卡 类型定义,小名 | typedef unsighed int d_int把unsighed int改名d_int unsighed int num=20; d_int num2=20; 它和num的类型完全相等 就是类型名太长 改个小名 |
static | 修饰变量和函数的 | |
while | 循环 | while循环 |
do...while | 循环 | 不管别的就是干 上来不管先循环一次 |
(1)调用局部变量
#include<stdio>
void test()//无返回值
{
int a=1;//定义变量 局部变量 出范围生命周期结束
a++; //a++ +1
printf("a=%d",a);//打印信息a;
}
int main()
{
int i=0;//定义变量i
while(i<5)//条件i<5
{
test();//打印a=2 因为调用函数是局部变量,每次调用时a都从1开始
i++; //i++ i+1 i>5循环结束
}
return 0;
}
示范一个代码示例
调用函数
打印结果是5个a=2
使用static 修饰局部变量 生命周期延长了!
代码如下
#include<stdio>
void test()//无返回值
{
static int a=1;//添加关键字static 现在a是一个静态局部变量 生命周期延长了
a++; //a+1 a的值保留
printf("a=%d",a);//打印信息a; 2 3 4 5 6
}
int main()
{
int i=0;//定义变量i
while(i<5)//条件i<5
{
test();//打印a=2 a的结果保留每次打印+1
i++; //i++ i+1 i>5循环结束
}
return 0;
}
这个打印结果就是2.3.4.5.6了因为a的结果保留了
static修饰了局部变量 生命周期延长
本来做不到的事情 被static加上buff一下就做到了哈哈
(2)extern 全局变量
代码如下
文件(1)int a=2022;
文件(2)extern int a; //extern生命外部符号
printf("a=%d",a);//很好的打印2022
打印结果是2022
因为全局变量的作用域是整个项目工程
int a=全局变量
static修饰全局变量!
代码如下
文件(1)static int a=2022; //使用static修饰全局变量
文件(2)extern int a; //extern声明外部符号
printf("a=%d",a);//识别不到全局变量a了
识别不到全局变量a了
static修饰全局变量 改变变量的作用域 让静态的全局变量只能在自己源文件中使用
出了源文件就没法使用了!
(3)static修饰函数
代码如下
文件(1)
int Add(int x,int y) //全局变量函数
{
int d=x+y;
return d;
}
文件(2)extern int Add(int,int) //extern声明外部符号
int main()
{
int a=10;
int b=20;
int sum=Add(a,b); //定义sum 把Add函数算出的结果放到sum里
printf("sum=%d",sum);
return 0;
}
static修饰函数的话 和修饰全局变量一样识别不到 不能使用
static修饰函数改变了函数的链接属性
外部链接属性——>内部链接属性
总结:
static 分享的比较多
关键字不能被修改 可以使用typedef来改名
总结完毕!