🏠1.常见的关键字;
🏡2.部分关键字的解析
🏫3.#define定义常量和宏
八、🏠常见关键字
auto break case char const continue default do double else enum
extern float for goto if int long register return short signed
sizeof static struct switch typedef union unsigned void volatile while
🏡 关键字typedef(类型重命名)
#include
typedef unsigned int uint;
int main()
{
unsigned int num1 = 0;
//由于unsigned过长,我们可用typedef对unsigned重命名
uint num2 = 0;
return 0;
}
🏡关键字static
static是用来修饰变量和函数的
- 修饰局部变量-称为静态局部变量
- 修饰全局变量-称为静态全局变量
- 修饰函数-称为静态函数
我们可以用两个程序进行对比
#include
void test()
{
int a = 1;
a++;
printf("%d\n",a);
}
int main()
{
int i = 0;
while(i < 10)
{
test();
i++;
}
return 0;
}
#include
void test()
{
static int a = 1;
a++;
printf("%d\n", a);
}
int main()
{
int i = 0;
while(i < 10)
{
test();
i++;
}
return 0;
}
结论:我们可以看出,通过static,输出a的值有明显的改变。
当static修饰局部变量时,局部变量除了作用域不销毁。
本质上,static修饰局部变量时,改变了变量的存储位置。
注释:extern时对变量或则函数的声明。
结论:在static修饰全局变量时,全局变量的外部链接属性编程了内部链接属性,
其他源文件(.c)久更不能在使用到这个全局变量了。
如果static修饰函数后,函数出错,
结论:函数是外部链接属性,但是被static修饰的时候,
外部链接属性久变成内部链接属性,无法被调用,程序报错。
-
register修饰符暗示编译程序相应的变量将被频繁的使用,
建议将变量保存在寄存器当中,这样可加快存储速度,
#include
#define NUM 100
int main()
{
int arr[NUM] = { 0 };
printf("%d\n", NUM);
int n = NUM;
printf("%d\n", n);
return 0;
}
#define定义宏
#include
#define Add(x,y) ((x) + (y))
//Add - 宏名
//x y宏的参数
((x)+(y)) - 宏体
int main()
{
int a = 10;
int b = 20;
int c = Add(a, b);
printf("%d\n", c);
return 0;
}
---
# 总结
1.对于关键字typedef、static、register的讲解。
2.#define定义的常量和宏的讲解
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)