|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
函数
函数组成
函数调用
传参函数(实参,形参)
变量种类(全局,静态,局部)
变量的使用和生存周期
函数
函数就是被定义有特定功能的一小段独立程序块(语句块)
函数是c语言中代码复用的基本单位
函数都是平等的 函数内部不能再嵌套定义函数
main()函数是一个特殊的函数
入口函数 第一个被执行
审阅项目开始
宏——替换 函数——调用
组成
函数头
函数体
分类
库函数
ansi c定义的标准库函数
第三方库函数
自定义函数
自己编写的函数 包装后可以成为函数库
函数格式
返回值类型 函数名(参数类型 形参1,参数类型,形参2,~~~~)
{
函数语句;
return 返回值;
}
返回值类型
函数运行后的结果数据类型
用viod定义返回值类型则没有返回值,return后不需要任何表达式
参数类型
形参的数据类型
用void定义参数的数据类型,表示没有参数。
return语句
结束函数
用于返回一个值
调用函数
函数名([实际参数表]);
实际参数表与定义参数表的格式 数目要保证一一对应关系;
编译的时候往上找
使用函数时进行声明
声明:函数头;
声明可以有多个
函数定义
函数头+函数体
只能存在一份
传参函数(实参,形参)
调用时将实参的值赋给形参(值传递)?原理 赋值符 形参不能修改实参值
指针传递 形参可以通过指针修改实参值
定义函数时,函数名后面括号中的变量名称称为“形式参数”简称形参
主调函数中调用一个参数时,函数名后边括号中的参数可以是一个表达式,成为“实际参数”
内存中两参数不同 各自独立
变量的种类
变量的作用域
局部变量
生存周期 只能在{}内使用,离开无效;
同名也不传递参数值
两个内存空间
进入作用域分配空间 离开作用域 空间销毁
全局变量
在函数外部定义 对所有函数有效(也可以在其他文件中使用 extern声明)
定义的位置开始到文件的结束位置为止
可以被其定义位置后的所有其他函数使用
当一个函数改变了数值时其他的全部改变
允许局部变量与之同名
局部变量使用优先 就近原则
全局变量命名以g_开头
在其他文件中的使用
声明
extern 类型 全局变量名
声明时不可以给全局变量赋初始值 赋值则为定义
一个源文件中的全局变量仅限于该文件时,要在定义全局变量时加static
ststic 类型 变量名
静态变量
所有全局变量均为静态
生存周期不变,作用域修改为只能在本文件中使用
局部变量定义时加上类型修饰符static,才为静态变量
生存周期变长(程序运行期间) 作用域不变
在函数中可保值 初始化只执行一次
变量的作用域
描述变量的使用范围
变量生存周期
变量的内存空间在什么时候被分配什么时候被销毁 销毁后不可再使用
局部变量生存周期
函数进入作用域之后局部变量被分配空间离开则销毁
全局变量生存周期
程序运行前被分配 运行结束后被销毁
指针
基本类型
数组类型
保存基本数据类型
地址类型
指针
定义
开辟内存空间 并用变量名代表那一块空间
空间最小单位是字节 每个字节的编号被称为地址
定义
赋值
解引用
& 取地址
* 说明符 说明变量是指针变量 不能省略 但它不是变量名的一部分
不同类型的数据和其他地址需要用不同类型的指针变量存储
数据类型 *变量名称
不同类型指针不能相互赋值
指针本质上只占4个字节的变量 变量所对应的内存空间存储是一个地址值
指针也是一个数据 也有内存 但指针存储的是地址
用&运算符来取一个对象的地址
把一个变量的地址赋值给指针变量
*是间接寻址 用于访问指针所指向的对象
对于*号在指针中的符号重用
定义指针的时候
int a=12
int *p=0;
p=&a;
int temp=*p;等价于temp=a
*p=200; 等价于a=200;
小端口存储方式:将一个数据存入到内存的时候使用补码方式 在存储时低字节保存到低地址上 高字节保存到
高字节上即逆序存储 按字节逆序存储
内存本身无数据类型 在存或读时才需要分辨
数据类型只是规定了读写内存的长度而已
通过解引用 间接访问这个地址所指向的内存空间
NULL实际就是0,当指针指向的地址是0的时候表示这个指针指向的内容也就是地址0是不可读写,读写则会引起
程序崩溃
if(变量名==NULL)
return;
?判断是否可以读取第一个字符
while(字符串数组!=‘\0’) 遍历数组 判断是否读取结束 神句
|
|