伙伴云客服论坛»论坛 S区 S软件开发 查看内容

0 评论

0 收藏

分享

C++中形参和实参的区别及说明

目录

    C++中形参和实参的区别函数的参数(形参与实参)的理解
      函数的参数
    总结


C++中形参和实参的区别

之前不时搞不清楚实参和形参的真正含义,总是搞混。如今,看了教材和一些优秀的博客,略微明白了他们之间的区别。
用于接收传送值的变量被称为形参。
传送给函数的值被称为实参。
    C++规范使用参数(argument)来表示实参,使用参量(parameter)来表示形参,因而参数传送是将参数赋给参量。1.形参出如今函数定义的地方,多个形参之间以逗号分隔,形参规定了一个函数所接受数据的类型和数量。2.实参出如今函数调用的地方,实参的数量与类型与形参一样,实参用于初始化形参。3.形参出如今函数定义中,在整个函数体内都可以使用, 分开该函数则不能使用。实参出如今主调函数中,进入被调函数后,实参变量也不能使用。 形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的4.值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。5.形参变量只要在被调用时才分配内存单元,在调用完毕时, 即刻释放所分配的内存单元。因而,形参只要在函数内部有效。 函数调用完毕返回主调函数后则不能再使用该形参变量。6.实参可以是常量、变量、表达式、函数等, 无论实参是何品种型的量,在停止函数调用时,它们都必需具有确定的值, 以便把这些值传送给形参。 因而应预先用赋值,输入等办法使实参获得确定值。7.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。8.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因而在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

函数的参数(形参与实参)的理解


函数的参数

    实际参数(实参)
真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何品种型的量,在停止函数调用时,它们必需有确定的值,以便把这些值传送给形参。
    形式参数(形参)
形式参数是指函数名后括号中的变量。因为形式参数只要在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因而形式参数只在函数中有效。
我们写一段代码感受一下:
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. void Swap1(int x, int y)
  4. {
  5.         int tmp = 0;
  6.         tmp = x;
  7.         x = y;
  8.         y = tmp;
  9. }
  10. void Swap2(int *px, int *py)
  11. {
  12.         int tmp = 0;
  13.         tmp = *px;
  14.         *px = *py;
  15.         *py = tmp;
  16. }
  17. int main()
  18. {
  19.         int num1 = 1;
  20.         int num2 = 2;
  21.         Swap1(num1, num2);
  22.         printf("%d %d\n", num1, num2);
  23.         Swap2(&num1, &num2);
  24.         printf("%d %d\n", num1, num2);
  25.         system("pause");
  26.         return 0;
  27. }
复制代码
输出结果:
C++中形参和实参的区别及说明-1.png

上面Swap1和Swap2函数中的参数想x,y,px,py都是形式参数。在main函数中传给Swap1的num1和num2和传 给Swap2函数的&num1,&num2是实际参数。
让我们对函数的形参与实参停止分析:
C++中形参和实参的区别及说明-2.jpg

代码对应的内存分配:
C++中形参和实参的区别及说明-3.jpg

这里可以看到Swap1函数在调用的时候,x,y拥有自己的空间,同时拥有了和实参一模一样的内容。所以我们可以 简单的认为:形参实例化之后其实相当于实参的一份临时拷贝。

总结

以上为个人经历,希望能给大家一个参考,也希望大家多多支持网站。

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
本版积分规则 高级模式
B Color Image Link Quote Code Smilies

薇可馨
注册会员
主题 25
回复 27
粉丝 0
|网站地图
快速回复 返回顶部 返回列表