A.几个重点的关键字学习
1.a.关键字 typedf : 类型定义,这里可以理解为类型重命名。
eg:#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedef unsigned int uint;
//unsigned int ->uint
typedef struct Node
{
int date;
struct Node* next;
}Node;
//struct Node->Node
int mina() {
unsigned int num = 0;
uint num = 2;
struct Node n;
Node n2;
return 0;
}
2.关键字static
3种用法:
1.修饰局部变量
2.修饰全局变量
3.修饰函数
#include<stdio.h>
void test()
{
int a = 1;
a++;
printf("%d", a);
}
int main() {
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}//结果 -> 2 2 2 2 2 2 2 2 2 2
a.static修饰局部变量
#include<stdio.h>
void test()
{
static int a = 1;//static修饰局部变量的时候,局部变量除了作用域不销毁的。本质上,static修饰局部变量的时候,改变了变量的存储位置。影响了变量的生命周期,生命周期边长,和程序的生命周期一样长。
a++;
printf("%d", a);
}
int main() {
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}//结果 ->2-11
b.static修饰全局变量:
全局变量是具有外部链接属性的,编译+链接->可执行程序
static修饰全局变量:static修饰全局变量的时候这个全局变量的外部连接属性就变成了内部链接属性,其他源文件(.c)就不能再使用到这个全局变量了!我们在使用的时候,感觉作用域变小了!
#include<stdio.h>
int g_val = 2022;
int main()
{
printf("%d", g_val);
return 0;
}
c.static修饰函数
函数是具有外部链接属性的,编译+链接->可执行程序
一个函数本来是具有外部链接属性的但是被static修饰的时候,外部链接属性就变成了内部链接属性,其他源文件(.c)就无法使用了!
#include<stdio.h>
int Add(int x, int y)
{
return x + y;
}
int main()
{
int a = 10;
int b = 20;
int z = Add(a, b);
printf("%d\n", z);
}
3.关键字register -寄存器
电脑上的存储设备都是有哪些?
寄存器(集成到CPU上)
高速缓存(cache)
内存
硬盘
从上到下->空间越来越大,造价越来越低,速度越来越慢。
#include<stdio.h>
int main(){
register int num=3;//建议3放在寄存器中去
return 0;
}
B.堆区,栈区,静态区三者的区别
栈区:存放局部变量,进入创建,走出销毁
静态区:存放静态变量(static修饰的变量),出了作用域不销毁,除了程序才销毁,而且静态变量只在本文件内起作用。