一维整型数组做函数参数
形参+ 数组形式+数组长度
实参+数组名+数组长度
一维字符型数组做函数参数
1.一维字符型数组---用来存放字符串
因为处理的数字符串数据,字符串操作
二维数组做函数参数
总结:
形参---二维数组形式+行数
实参--- 数组名+行数
二维字符数组:
作函数参数与二维整型数组 使用方式相同
注意:
1.不要和一维字符型数组传参搞混
一堆字符型数组,主要用来存放 字符串数据
二字符串数据有结束标志(‘\0’),故,传参时,不需要传长度
2.二维字符型数组,用来存储多个字符串,要操作时,往往都是操作多个字符串,而多个字符串没有所谓结束的标志。看的是数组长度(行数)
总结:
1.一维整型数组 做函数参数
形参---数组形式 + 数组长度
实参---数组名 +数组长度
2.一维字符型数组 作函数参数
形参---数组形式
实参---数组名
原型:一维字符型数组 主要用来存储字符串数据
3.二维整型数组 做函数参数
形参---数组形式 + 行数
实参---数组名 +行数
4.二维字符型数组 作函数参数
形参---数组形式 + 行数
实参---数组名+ 行数
标识符 的作用域 与可见性的问题:
作用域: 名字 作用的访问
可见性:程序运行到某一个位置 哪些名字可以被使用(被看见)
作用域:
局部作用域:
{ } -----花括号范围内 ,就叫局部作用域
在局部作用域 定义的变量---局部变量
全局作用域:
不在任何一个 { }范围之内
在全局作用域 定义的变量---全局变量
标识符的可见性的规则:
1.先定义,后使用
2.同一个作用域中,不能有同名标识符
3.在不同作用域,同名标识符,相互之间没有影响
4.如果是不同作用域 但是作用域之间存在嵌套关系,则内层的作用域的同名标识符,会屏蔽外层的作用域的同名标识符(就近原则)
c语言的五个区(1. 栈 2. 堆 3. 字符常量区4.全局区(静态区) 统称为 数据区 // 5.代码区 代码区)
局部变量
特点:局部变量 空间一般都开栈上
如果不初始化,局部变量中的值是随机值(垃圾值)
全局变量
特点:全局变量 空间 全局区
如果不初始化,默认初始化为0
时间角度
生命周期
int a; // 什么时候a的空间被开辟,什么时候a的空间被销毁
局部变量的生命周期
从程序运行到定义处开始存在,到程序运行到 它作用范围结束时 销毁
全局变量(静态变量)的生命周期
从程序开始运行时就存在了,直到整个程序运行结束时,销毁
注意:全局变量和静态变量,不能用变量进行初始化
存储类别的关键字:
auto ---表示它是一个自动变量(局部变量)---自动申请 自动释放
static --- static修饰局部变量 此时会被放在 全局区(静态区)
-----此时局部变量的生命周期被延长
注意: 1. static 修饰局部变量---只会被初始化一次
2. static 修饰的变量 ---具有继承性
3.static 修饰的变量---只能用常量初始化(不能用变量初始化)
register --- 寄存器 表示把变量 存储 寄存器中
---建议性
----register修饰的变量,不能做 & // (取地址)
extern ---外部的 ---表示你的变量 是存在外部的
----不在当前文件中
-----只能 声明 全局变量
static 修饰全局变量
------表示限定全局变量的作用域位本文件,别打文件不能通过extern来声明使用
用途:保护私有数据 防止被引用
修饰函数 // 声明函数 在别处定义的
static修饰函数作用和修饰全局变量作用相同
限定作用域为本文件,别的文件不能通过extern来声明使用
static
变量 :局部变量
表示将局部变量存放到
[ 存储类别 ] 类型 变量名;