定义参数:无参:
类型名 函数名()
{
函数体
}
有参:
类型名 函数名(形式参数表列)
{
函数体
}
空函数
调用函数时注意函数有无返回值
参数传递:实参(常量变量表达式)传递给形参,实参要有确定的值
形参实参参数类型相同,不同则进行转换
形参只在函数调用时被分配内存单元,而且不会改变实参的值
函数的返回值:
1.函数的返回值是通过函数中的return 语句获得的
2.函数返回值的类型在定义函数时定义
3.返回值类型应与函数类型相同,不同时转换成函数类型
4.不带返回值,则应定义为void属性
数组作为函数参数哦:
数组元素可以用作函数实参,不能用作形参。因为形参是在函数被调用时临时分配存储单元的,数组在内存占连续的一段存储单元
数组名作参数(实参和形参)数组名作参数时,传递的是数组首元素地址。所以在声明形参时,不用指定数组大小,可以接一个空方括号。此时形参改变时,实参也改变。
多维数组名在形参定义时,可以省略第一维大小,其他则不能省。形参实参第二维大小相同。
局部变量和全局变量:
主函数中定义的变量只在主函数中有效。不同函数中可以使用同名的变量,他们代表不同的对象,互不干扰。形参也是局部变量
在函数内部定义的是局部变量,在函数外部定义的是全局变量,在函数调用全局变量时,可以改变全局变量的值。
若全局变量与局部变量相同,则在局部变量范围内,全局变量被“屏蔽”
变量的存储方式:
全局变量存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序执行完毕释放。
动态存储区存放:函数形参,函数中定义的没有用static声明的变量(即自动变量),函数调用时的现场保护和返回地址。函数调用时动态分配存储空间,函数结束时释放这些空间。 如果连续调用两次,分配的空间一般是不同的。
数据的存储类别:
auto,statis,register,extern
局部变量: auto(自动变量):调用函数时,系统给其分配存储空间,在函数调用结束时自动释放这些存储空间。包括:函数中的形参,函数中定义的局部变量
static (静态局部变量):希望函数中的局部变量的值在函数调用结束后不消失而继续保留原值,即其占用的存储单元不释放,在下一次调用该函数是,该变量已有值。
(静态局部变量只在编译时赋初值,即只赋值一次,而自动变量在函数每调用一次,就重新给其赋初值。如果不赋初值的话就自动赋‘0’或‘\0’)
register(寄存器变量):数据存储在cpu寄存器中,速度快,使用频度高
全局变量: extern:扩展外部变量在程序文件中的作用域,也可以将其作用域扩展到其他文件(如源文件)(将外部变量作用域限制在本文件中,只需在定义外部变量时前加static(此时static并不是将其分配在静态存储区而是变量作用域的扩展问题))
内部函数和外部函数
内部函数:该函数只能被本文件中其他函数所调用 。定义前加static
外部函数:函数可以被其他文件的函数使用,其他文件调用时要进行声明。定义前加extern,一般省略