黑马程序员技术交流社区
标题:
形参和实参!!!
[打印本页]
作者:
wang619590713
时间:
2015-4-14 22:21
标题:
形参和实参!!!
希望路过的大神帮忙解释一下形参和实参的区别!总是有些不明白!谢谢了!
作者:
sunyang
时间:
2015-4-14 22:40
在定义函数时,函数名后面的()中定义的变量称为形式参数(形参);在调用函数时传入的值称为实际参数(实参)。
// b是test函数的形参(形式参数)
void test(int b)
{
b = 9; // 改变了形参b的值
}
int main()
{
int a = 10;
printf("函数调用前的a:%d\n", a);
test(a); // a是test函数的实参(实际参数)
printf("函数调用后的a:%d", a);
return 0;
}
如果是基本数据类型作为函数的形参,那是简单的值传递,将实参a的值赋值给了形参b,相当于
int a = 10;
int b = a;
b = 9;
a和b是分别有着不同内存地址的2个变量,因此改变了形参b的值,并不会影响实参a的值。
作者:
强颜欢笑i
时间:
2015-4-14 22:40
#include <stdio.h>
void swap(int *a,int *b)
{
int *t;
t=a;a=b;b=t;
}
main()
{
int i=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d %d\n",*p,*q);
}
void swap(int *a,int *b) 中的a、b是形参,swap(p,q)中的p、q是实参。
至于为什么“参数可以由实参传向形参,而不能逆反传递”,你可以这样理解:
我们不妨把函数比作戏剧的剧本,把形参比做剧本中的人物;当我们要表演此戏剧的时候,我们肯定会让真实的演员(实参)去扮演(替换)剧本里的角色(形参),而绝不可能用剧中人去替代现实的演员!理解了上面的道理,你还会有问题吗?
作者:
Errors
时间:
2015-4-14 22:41
形参实在函数定义和声明时使用的参数,实参是调用函数时传入函数内部的参数,传入函数的的实参要与函数的形参保持匹配,先可以这么理解就是,函数调用时用实参替换形参的位置。
作者:
蓝鸟
时间:
2015-4-14 22:54
数组做形参时,转的是指针,8个字节
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2