(1) 形参之间用逗号分割,每个形参前面的类型必须写明
(2)可以接受0个或多个参数
(1)实参可以是常量、变量或表达式
(2)即使没有参数,()必须有
(3)调用其他函数的函数成为主函数,如main(),被调用的函数称为被调函数
}形参必须是变量,实参可以是常量、变量或表达式 形参和实参应一一对应,数量相同,类型一致。实参的值依次传递给形参(1)return 只能返回一个值
(2)函数执行过程中遇到return 停止执行,并返回一个值
用途:传给变量赋值、再传给函数、输出返回值
(3)void不能省略,若省略。函数默认返回类型为int
(1)获取参数类型,值返回类型,函数名
(2)参数名可以不用写。
若形参与实参类型不同,编译器会帮忙转换。实参类型-->形参类型
每个函数都有自己的变量空间,参数也位于这个独立空间内,和其他函数无关
定义在函数内部的变量就是本地变量
- 本地变量是定义在块内的。
- 它可以是定义在函数的块内
- 也可以定义在语句的块内
- 甚至可以随便拉一对大括号来定义变量
2. 程序运行进入这个块之前,其中的变量不存在,离开这个块, 变量就消失了。
3. 块外面定义的变量在里面仍然有效
4. 块里面定义了和外面同名的变量则掩盖了外面的。
5. 不能在一个块内定义同名的变量
6. 本地变量不会被默认初始化
7. 参数在进入函数的时候被初始化了
因为实参给形参传递值了,这个值初始化参数了
(1)函数不能嵌套定义
(2)逗号运算符 与 函数调用的括号区分
这个括号没什么意义 ,还容易使人误解调用return 函数
把0返回给调用它那个的代码. 之后上报给系统(windows),执行相应功能
若返回为非0 ,一般会出错
这样写,有的编译器会报错的
定义在函数外,而不属于任何函数的变量称为全局变量
定义全局指针,默认NULL
{int x=4; //x为局部变量,在本函数中,全局变量x不起作用,所以x的值不变return x;(3) 全局变量尽量不要有联系
(2)只能作用于所定义的函数内
赋值,只在第一次调用起作用。若没有赋值,默认为0
//某个函数(求阶乘)
(3)静态局部变量就是特殊的全局变量
本地变量c位于另一个内存区域
本地作用域(函数内的局部作用域,只能在函数内部访问)
-
返回本地变量地址的函数很危险
f和g两个函数之间存在什么关系?为什么f里的i和g里的k的地址是一样的?
f函数调用完以后,占用的内存就释放了,这时候立马就调用g函数了,将f函数释放的内存又分配给g函数了,这样f里的i和g里的k的地址就是一样的了
A选项,没有写参数,则是不定型参数,是可以定义的
D选项,类比int main()函数。 要有返回值
对于不返回值而且只有一个int类型的参数的函数,以下哪些函数原型是正确的? A,B,C
B选项,不定型参数。编译器会根据函数调用时,你给的参数判断
D选项,没有参数的类型
}输出:3,8先调用swap()函数,因为没有传参数,所以使用的是全局变量,进行交换。之后退出函数,返回main()函数里,因为main()函数定义了x,y.所以又把全局变量给掩盖了,所以输出的是3,8