A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wang619590713 中级黑马   /  2015-4-14 22:21  /  778 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

希望路过的大神帮忙解释一下形参和实参的区别!总是有些不明白!谢谢了!

4 个回复

倒序浏览
在定义函数时,函数名后面的()中定义的变量称为形式参数(形参);在调用函数时传入的值称为实际参数(实参)。


// 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的值。
回复 使用道具 举报
#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是实参。
至于为什么“参数可以由实参传向形参,而不能逆反传递”,你可以这样理解:
我们不妨把函数比作戏剧的剧本,把形参比做剧本中的人物;当我们要表演此戏剧的时候,我们肯定会让真实的演员(实参)去扮演(替换)剧本里的角色(形参),而绝不可能用剧中人去替代现实的演员!理解了上面的道理,你还会有问题吗?
回复 使用道具 举报
形参实在函数定义和声明时使用的参数,实参是调用函数时传入函数内部的参数,传入函数的的实参要与函数的形参保持匹配,先可以这么理解就是,函数调用时用实参替换形参的位置。
回复 使用道具 举报
数组做形参时,转的是指针,8个字节
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马