目录
#define--定义标识符常量--#define MAX 100
一、常见关键字
注意define不是关键字
auto:自动--局部变量 auto int a=0;局部变量都会有自动,都是自动变量
enum:枚举
extern:声明外部变量
register:
计算机存储数据 | ||
寄存器 | 访问速度越快。空间越来越小 | |
高速缓存 | ||
内存 | 8G、4G、16G | |
硬盘 | 500G | 越慢,空间越来越大 |
从内存中拿出数据,给CPU中央处理器
随着发展,CPU处理的速度越来越快,但是内存的访问速度跟不上,所以CPU以后从寄存器里面拿数据,没有所要数据的话再依次从高速缓存往下拿取数据。
int a=0;//局部变量默认省略auto--自动变量 //auto int a=0;
register int b=0;//建议把b定义成寄存器变量
typedef--改名卡
typedef--类型定义--类型重定义
int实际上是signed int
typedef unsigned int u_int;//把unsigned int重新取名为u_int---改名卡
unsigned int num =20;
u_int num=0;
static关键字
//static 修饰局部变量
//局部变量的声明周期变长
//static 修饰全局变量
static int a=1;//a是一个静态的局部变量 ---保存上一次的值
void test()
{
//static 修饰局部变量
//局部变量的声明周期变长
//static 修饰全局变量
static int a=1;//a是一个静态的局部变量 ---保存上一次的值
a++;
printf("a=%d\n",a);
}
int main()
{
int i=0;
while(i<5)
{
test();
i++;
}
return 0;
}
// 1、static 修饰局部变量
// //局部变量的声明周期变长
// 2、static 修饰全局变量
// 改变了变量的作用域-让静态的全局变量智能只能在自己所在的源文件内部使用
// 出了源文件就没法再使用
// 3、static修饰函数
//也是改变了函数的作用域--不准确
// static修饰函数--改变了函数的链接属性
//外部链接属性-->内部链接属性
//一个全局变量被static修饰,使得这个全局变量智能在本源文件内使用
//不能在其他源文件内使用
//main.c可以运行
int main()
{
extern int g_val;
printf("g_val=%d\n",g_val);
return 0;
}
//other.c
int g_val=2023;
如果把other.c里面的语句改成static int g_val=2023;会报错
//main.c
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;
}
//add.c
int Add(int x,int y)
{
int z=x+y;
return z;
}
#define--定义标识符常量--#define MAX 100
#define MAX 100
int main()
{
int a=MAX;//遇到MAX即为100
printf("a=%d\n",a);
return 0;
}
#define MAX 100
int main()
{
int a=MAX;
printf("a=%d\n",a);
return 0;
}
#define 可以定义宏-带参数
//宏的定义
#define MAX(X,Y) (X>Y?X:Y)
#include <stdio.h>
#include <string.h> //有此句以后不会出现警告
//宏的定义
#define MAX(X,Y) (X>Y?X:Y)
//函数的实现
int Max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int a=10;
int b=20;
//函数
int max1=Max(a,b);
printf("max1=%d\n",max1);
//宏的定义方式
int max2=MAX(a,b);
printf("max2=%d\n",max2);
return 0;
}