C31-形参与实参的区别
一 形参与实参
- 实参:调用函数时传递的实际值,可以是变量、常量或表达式,如"add(3,a)"中的’3’与’a’
- 形参:函数定义中声明的参数变量,用于接收实参的值,如"int add(intx,inty)"中的’x’与’y’
- C语言默认通过值传递参数,形参与实参是独立的变量,仅数据单向传递.因此实参与形参的值相同,但地址空间不同.
我们通过一个实例来论证以上知识点:
- 代码
#include <stdio.h>//下面我们将定义一个函数用于测试
int test(int x) //这里的x是形式参数{printf("形参数据%d的内存地址是:%p\n",x,&x);return 0;}//以下是主函数
int main()
{//局部变量的定义int x;int y;//数据录入puts("请输入一个整数:");scanf("%d",&x);//数据处理y=test(x); //这里的x是实际参数printf("实参数据%d的内存地址是:%p\n",x,&x);return 0;
}
- 结果
二 局部变量
- 引入:形参与实参就是局部变量.
-
局部变量是指在函数内或代码块({})内定义的变量,有特点:
- 作用域局限:仅在它定义的函数或代码块内有效,外部无法访问;
- 内存管理:存储于栈区,函数调用时创建,结束后自动释放,值为随机值.
-
分类
-
普通局部变量:每次调用函数时重新创建和初始化.
-
静态局部变量:仅初始化一次,生命周期贯穿程序,保留上次值.
-
-
注意:避免与全局变量同名(局部会屏蔽全局),禁止返回局部变量的地址