常见关键字
-
auto 定义自动变量
auto int( 所有的局部变量都是auto的,即自动创建自动回收,因此一般都省略auto)
-
break 定义终止 一般用于循环 while,for,do,switch
-
case 用于switch语句
-
char
-
const 常属性 用于修饰变量,修饰指针
-
continue 用于循环
-
default 默认 用于switch case语句
-
double 用于类型 和if else搭配使用
-
enum 枚举
-
do 用于do while语句
-
extern 用于声明外部符号
-
goto 分支和循环
-
register 寄存器 访问速度快
-
return 用于函数
-
signed/unsgined 用于类型,本身不是类型,是关键字(有符号的,无符号的)
-
void 无,空 一般用于函数的返回类型,函数参数,修饰指针
-
volatile linux操作系统
-
static 静态的
-
struct 结构体
-
union 联合体
(三个可以自定义的类型 : union,struct,enum)
-
typedef 类型重定义
- 关键字 typedef
类型重命名用法与变量定义相似,只是在前面加上 typedef
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
//观察num1和num2,这两个变量的类型是一样的
unsigned int num1 = 0;
uint_32 num2 = 0;
return 0; }
- 关键字static
//代码1 #include <stdio.h>
void test()
{
int i = 0;
i++;
printf("%d ", i); }
int main()
{
int i = 0;
for(i=0; i<10; i++)
{
test();
}
return 0; }
//代码2
#include <stdio.h>
void test()
{
//static修饰局部变量
static int i = 0;
i++;
printf("%d ", i);
}
//代码1
//add.c
int g_val = 2018;
//test.c
int main()
{
printf("%d\n", g_val);
return 0;
}
//代码2
//add.c
static int g_val = 2018;
//test.c
int main()
{
printf("%d\n", g_val);
return 0;
}
//代码1
//add.c
int Add(int x, int y) {
return c+y; }
//test.c
int main()
{
printf("%d\n", Add(2, 3));
return 0;
}
//代码2
//add.c
static int Add(int x, int y) {
return c+y; }
//test.c
int main()
{
printf("%d\n", Add(2, 3));
return 0;
}
static修饰局部变量,改变了变量的存储类型(有栈区存储变为静态区)。从而使得静态的局部变量出了自己的作用域也不会销毁,其实相当于改变了局部变量的生命周期。
如果想使用来自其他文件的全局变量,需要先进行声明。
extern是一个关键字,是专门用来声明外部符号的。
一个全局变量在整个工程的其他文件内部能够被使用,是因为全局变量具有外部链接属性。当一个外部变量备static修饰的时候,这个变量的外部链接属性就变成了内部链接属性,使得这个全局变量只能在自己的源文件内部使用,其他文件不能再使用,给我们的感觉是定义域变小了。
内存是一块比较大的使用空间,使用内存时会划分出不同的功能区域。
- 栈区:存放局部变量,临时变量
- 堆区:动态内存分配
- 静态区:存放全局变量,存放静态变量,因此生命周期不变