常见关键字
-
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
创建平台无关的数据类型,比如: time_t 、 size_t 、 uint8_t 、 int8_t 等。//将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对比代码 1 和代码 2 的效果理解 static 修饰局部变量的意义。 结论: static修饰局部变量改变了变量的生命周期。 让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。 修饰全局变量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 void test() { //static修饰局部变量 static int i = 0; i++; printf("%d ", i); }
//代码1 //add.c int g_val = 2018; //test.c int main() { printf("%dn", g_val); return 0; } //代码2 //add.c static int g_val = 2018; //test.c int main() { printf("%dn", g_val); return 0; }代码 1 正常,代码 2 在编译的时候会出现连接性错误。 结论: 一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使 用。 修饰函数
//代码1 //add.c int Add(int x, int y) { return c+y; } //test.c int main() { printf("%dn", Add(2, 3)); return 0; } //代码2 //add.c static int Add(int x, int y) { return c+y; } //test.c int main() { printf("%dn", Add(2, 3)); return 0; }代码 1 正常,代码 2 在编译的时候会出现连接性错误 . 结论: 一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。
static修饰局部变量,改变了变量的存储类型(有栈区存储变为静态区)。从而使得静态的局部变量出了自己的作用域也不会销毁,其实相当于改变了局部变量的生命周期。
如果想使用来自其他文件的全局变量,需要先进行声明。
extern是一个关键字,是专门用来声明外部符号的。
一个全局变量在整个工程的其他文件内部能够被使用,是因为全局变量具有外部链接属性。当一个外部变量备static修饰的时候,这个变量的外部链接属性就变成了内部链接属性,使得这个全局变量只能在自己的源文件内部使用,其他文件不能再使用,给我们的感觉是定义域变小了。
内存是一块比较大的使用空间,使用内存时会划分出不同的功能区域。
- 栈区:存放局部变量,临时变量
- 堆区:动态内存分配
- 静态区:存放全局变量,存放静态变量,因此生命周期不变
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)