1,
输入设备---CPU ---输出设备
|
V
存储器
总线 -- 0101
总线的宽度
总线 (1.数据总线 2.控制总线 3.地址总线)
2,
二维字符型数组做函数形参:
char s[3][10] = {"hello","world","china"};
形式上:
void printStr(char s[][10],int row) //注意需要传行数,因为操作多个字符串
本质上:
void printStr(char (*s)[10],int row)
实参:
printStr(s,row); //数组名 行数
3,
标识符 作用域 和 可见性问题
作用域:作用的范围
局部变量 --- 一定在某一个{} 范围内
全局变量 --- 不在任何一个{} 范围内
可见性:程序运行到某个点,哪些标识符可见
标识符的可见性的规则:
1.先定义,后使用
2.同一作用域中,不能有同名标识符
3.在不同的作用域,同名标识符,相互之间没有影响
4.如果是不同的作用域,但是作用域之间存在嵌套关系,
则内层的作用域的同名标识符,会屏蔽外层的作用域的同名标识符。
(就近原则)
时间上去区分:
动态变量(局部变量-空间是开辟在栈上的--自动申请自动释放)
(声明周期):
从定义的语句开始,到所在的作用域范围结束
eg:
栈上的 局部变量
静态变量 (全局变量)
从程序一开始运行,就存在,
直到程序结束时,销毁
eg:
全局变量
static 局部变量
注意:
全局变量(静态变量) --- 此时,
1)不能用变量进行初始化,只能常量初始化
2)静态区的变量
只会被初始化一次
3)值具有 继承性
4,
auto
auto int a; ---这个是一个自动变量 --- 栈上开辟的变量
static int a; --静态区 修饰的是 局部变量
register int a; --CPU 寄存器 建议性
extern int a; 扩展 延伸
表示 此时这个a 不是在当前文件中定义的 ,
如果要用,请到别的文件中寻找
多文件编程
一般使用在多文件编程中:
如果想在当前文件使用别的文件中的 全局变量 ,
此时,可以使用
extern int a; 做声明,相当于,把别的文件中的变量作用域扩展到当前文件
全局变量前面
static 修饰局部变量
将局部变量 存储在了 全局区(静态区)
将局部变量的生命周期延长
static 修饰全局变量
表示 将全局变量 的作用域限定到本文件中
别的文件中不能extern了
extern 可以放在函数声明中 --函数声明
表示的意思 --将函数作用域扩展到当前文件
static 加在函数前面
此时效果与修饰全局变量效果一样
将函数作用域限定到本文件中