CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

函数的形参与实参

楼主xwqiao(晓伟)2003-08-03 10:52:08 在 C/C++ / C语言 提问

在学习函数的时候,形参与实参总是搞不清楚,请哪位高手详细的说明一下,最好结合例子。 问题点数:0、回复次数:13Top

1 楼zoezinsser(wealth)回复于 2003-08-03 11:05:25 得分 0

形参和实参其实很好搞清楚:实参是形参的初始化。  
   
  当然,在c中,形参传值时,是单向的,只能传过去而不能传回来。  
   
  但,如果你想传回来时,就用传址的方法,即将指针作为形参!  
   
  在c++中,还可以用引用作为形参,在本质上是传址,但在内容上是传值!Top

2 楼zoezinsser(wealth)回复于 2003-08-03 11:06:47 得分 0

另外,形参和实参不是同一个内存空间,除了数组作为参数!Top

3 楼zoezinsser(wealth)回复于 2003-08-03 11:07:37 得分 0

由于时间的关系,我就不给例子了,留给其他的兄弟吧!Top

4 楼lemon520(喷血)回复于 2003-08-03 11:16:12 得分 0

函数调用是用实参替换行参,行参只是摆在那里等实参来替换的!实际参与运算的是实参!Top

5 楼kxen(雄鹰)回复于 2003-08-03 11:30:41 得分 0

我觉得从最根本上说没什么区别,形参可以看作实参的拷贝,拷贝完应该就没什么关系了Top

6 楼danielhf(我)回复于 2003-08-03 12:57:03 得分 0

你只要记住一句话:   在函数中运算的那个参数为实参,它通常是形参的一个拷贝,除非你按引用传递!Top

7 楼bluei(蓝之我)回复于 2003-08-03 13:07:49 得分 0

奇怪,zoezinsser可以连续恢复三次。Top

8 楼loveghb(温柔的毒药)回复于 2003-08-03 13:09:03 得分 0

实参就是函数外面那个,形参就是拷贝实参,然后压栈,也就是栈中的那个。(大部分情况都是如此)Top

9 楼fayejt(痞子)回复于 2003-08-04 22:31:07 得分 0

举个例子:  
  #include<iostream>  
  using   namespace   std;  
   
  int   func(int   a,int   b);  
   
  int   main()  
  {  
        cout<<"this   is   a   simple   e.g.\n";  
         
        int   x,y;  
        cin>>x;  
        cin>>y;  
        int   z=func(x,y);  
        cout<<"x+y=   "<<z;  
   
        system("pause");    
        return   0;  
  }  
  int   func(int   a,int   b)  
  {  
      return   a+b;  
  }  
   
  这里的a,b就是形式参数,从字面就可以理解,它只是个形式,在这里的意思就是输入到func括号里面的两个数相加,  
  而x,y就是实参,它是主角,你所输入的是x,y   的值,而不是a,b的值,x,y才能被编译器真正识别,然后返回Top

10 楼fireseed(【VC无敌,英明神武,千秋万代,一统江湖!】—奶油狗)回复于 2003-08-04 22:35:23 得分 0

一般来讲,你不需要搞清楚什么是形参,什么是实参,因为这只有在上课时才用到。  
   
  我有超过5年的编程经验,算半个老手了,可是到现在也不明白形参和实参的具体概念,因为我觉得我会用就够了。Top

11 楼lixdo(QQ(203))回复于 2003-08-04 23:20:19 得分 0

-----------------------------------------------------------------------------  
  void   hello(int   x);  
  int   main()  
  {                                                                                         ——  
      int   iLoveC=14;     ------>创建iLoveC变量,       |   14   |       ·  
      hello(iLoveC);                   并将14赋给她                 ——             ·  
      ···                                                                         iLoveC               ·  
  }                                                                                                                     2个变量  
                                                                                                                        2个名称  
  void   hello(int   x)                                                                                 ·  
  {                                                                                         ——             ·  
      ···           ------->创建x变量,将iLoveC         |   14   |       ·  
  }                                           的值14赋给她                       ——  
                                                                                              x  
  -----------------------------------------------------------------------------  
  -----------------------------------------------------------------------------  
  void   hello(int   &x);  
  int   main()  
  {                                                                                         ——  
      int   iLoveC=14;     ------>创建iLoveC变量,       |   14   |       ---->1个变量  
      hello(iLoveC);                   并将14赋给她                 ——                   2个名称  
      ···                                                                         iLoveC  
  }          
                                                                                                |  
  void   hello(int   &x)                                                           |  
  {                                                                                             |  
      ···                   ------->使x成为         -----------  
  }                                             iLoveC的别名  
  -----------------------------------------------------------------------------  
  上面的x都是形参,iLoveC就是实参了吧,不知道c语言的是不是一样的呢??:)  
  实参就没什么好说的了,形参可以从上面看出对我们能不能写出好程序有很大关系哦。//  
  我不是高手,可我和电脑之间正放着一本厚厚的c++,我这么麻烦的写这些  
  并不只因为你,我正在学c++,这也有可以加固自己的理解吧。  
  好了,大家都好好学习:)  
  Top

12 楼mushengyuan(凌云)回复于 2003-08-04 23:46:40 得分 0

main(   )  
  {   int   a,b,c;  
      scanf("%d%d",&a,&b);  
      c=max(a,b);  
      printf("max   is   %d",c);  
  }  
    max(int   x,int   y)     /*定义有参函数max*/  
    {   int   z;  
        z=x>y?x:y;  
        return(z);  
    }  
   
   
   
  ---------------------------------------------------------------------------------  
   
  其中x,y为形参,a,b为实参;  
  注意:C语言规定,实参变量对形参变量的数据传递是"值传递",即单向传递,只由实参传给形参  
            ,而不能由形参传回来给实参.  
   
   
  Top

13 楼Inkick(星点)回复于 2003-08-05 02:36:42 得分 0

简单的说,形参是指函数和其他block的接口~  
   
  函数通过形参和外界进行数据交换~是函数获得数据的途径  
   
  而实参是外界传递给函数数据的一个方式~  
   
  楼上的几位的例子很清楚,我就不废话了Top

相关问题

  • 怎实现函数的可选参数?
  • Fileexists函数的讨论!!!多谢各位参与!!!
  • RGB(R,G,B)函数原理深层次讨论,欢迎参与.
  • RGB(R,G,B)函数原理深层次讨论,欢迎参与.
  • biosdisk()函数参数
  • 函数和参数
  • c# 可以实现 把某个函数作为 另一个函数的参数进行调用吗?
  • 定义一个函数模板,函数类型确定,参数类型不确定,如何实现
  • 如何实现函数参数的缺省,
  • c中函数的不定参数是怎么实现的?

关键词

  • c++
  • 函数
  • 拷贝
  • 数据
  • ilovec
  • 形参
  • 变量
  • 传回
  • 传递
  • 例子

得分解答快速导航

  • 帖主:xwqiao

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo