字符型数组传递字符串时才存在‘ \0
标识符的作用域与可见性
1)作用域:(1)局部作用域:只能生效在某一个区域变量 i)
(2)全局作用域:全局都能生效,未包含在任意函数(变量g,i)
注意:一般不用全局变量,除非变量有很强的通用性。
若全局变量未被赋值,初始化,则自动以位(bit)模式清零
所有的函数名都具有全局作用域
2)标识符:(1)所有标识符必须先定义再使用
(2)在没有包含关系的作用域中定义的同名标识符互不干扰。
(3)在两个或两个具有包含关系的不同作用域中定义的 同名标识符 外层标识符在内层不可见
(4)在同一作用域中,不能定义同名标识符3)变量的生存期
(1)静态生存期:与程序的运行周期相同 1)全局变量(return 时结束) 2)用static(将变量由动态生存区变为静态生存区)修饰的局部变量
static(开辟一个固定的空间,变量只被初始化一次)(考点!!!)
(2)动态生存期
随着程序的运行不断发生变化的变量
4)变量的存储类别
(1)前缀 auto定义自动变量,主要用于堆区
(2)前缀register 寄存器变量,将变量定义到CPU内部(读写速度更快) 一般不用
考点,对 变量i取地址会编译报错。
(3)前缀extern(外部的)声明某个函数在这个函数外,起到一个声明的作用
主要用在头文件声明定义过的变量。
当主调函数需要使用后面的函数时需要在主调函数前说明。
在遇到另一个全局变量时,需要你调用就先声明
vsp 下行窗口调用指令,左右开
sp,上下开
不同窗口鼠标的移动
头文件中只放声明不放定义
自定义的头文件用双括号,库里的头文件用尖括号
static 加在函数或者全局变量前面表示本函数只能在本文件(.c文件)中使用
5)预处理命令 例如
(1)表示函数main.c只做预处理,不编译
并传递到main.i函数中
(2)宏定义中不能加分号。
所有的宏定义都是文本替换,所以要加括号
【1】不带参宏定义,为后续编译做准备
【2】带参宏定义,,使用方法
6)文件包含 include
双引号和尖括号对于绝对路径,没有差异
双引号相对路径在main.c中 尖括号相对路径在user/include中
7)条件编译 例如 :#if 0........#endif
选择编译部分代码#endif之后的代码
#ifndef 表示如果未定义则有效。例如
作用避免重复定义出现编译错误 格式#ifndef 加宏参数 #define 同一宏参数名
最后包含所需范围后加#endif