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

 更新时间:2023年02月22日 08:53:46   作者:小王同学.  
这篇文章主要介绍了C++中形参和实参的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

之前一直搞不清楚实参和形参的真正含义,总是搞混。现在,看了教材和一些优秀的博客,稍微明白了他们之间的区别。

用于接收传递值的变量被称为形参。

传递给函数的值被称为实参。

  • C++标准使用参数(argument)来表示实参,使用参量(parameter)来表示形参,因此参数传递是将参数赋给参量。
  • 1.形参出现在函数定义的地方,多个形参之间以逗号分隔,形参规定了一个函数所接受数据的类型和数量。
  • 2.实参出现在函数调用的地方,实参的数量与类型与形参一样,实参用于初始化形参。
  • 3.形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的
  • 4.值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
  • 5.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。
  • 6.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
  • 7.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。
  • 8.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

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

函数的参数

  • 实际参数(实参)

真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们必须有确定的值,以便把这些值传送给形参。

  • 形式参数(形参)

形式参数是指函数名后括号中的变量。因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。

我们写一段代码感受一下:

#include<stdio.h>
#include<stdlib.h>
void Swap1(int x, int y)
{
	int tmp = 0;
	tmp = x;
	x = y;
	y = tmp;
}
void Swap2(int *px, int *py)
{
	int tmp = 0;
	tmp = *px;
	*px = *py;
	*py = tmp;
}
int main()
{
	int num1 = 1;
	int num2 = 2;
	Swap1(num1, num2);
	printf("%d %d\n", num1, num2);
	Swap2(&num1, &num2);
	printf("%d %d\n", num1, num2);
	system("pause");
	return 0;
}

输出结果:

上面Swap1和Swap2函数中的参数想x,y,px,py都是形式参数。在main函数中传给Swap1的num1和num2和传 给Swap2函数的&num1,&num2是实际参数。

让我们对函数的形参与实参进行分析:

代码对应的内存分配:

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C语言自定义数据类型的结构体、枚举和联合详解

    C语言自定义数据类型的结构体、枚举和联合详解

    这篇文章主要给大家介绍了关于C语言自定义数据类型的结构体、枚举和联合的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 详解C语言和Python中的线程混用

    详解C语言和Python中的线程混用

    这篇文章主要介绍了C和Python中的线程混用的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • EasyC++静态持续变量

    EasyC++静态持续变量

    这篇文章主要介绍了EasyC++静态持续变量,除了自动存储变量之后,C++当中还有静态持续变量。关于静态持续变量的定义C++和C语言是一样的,它拥有三种链接性,即外部链接性、内部连接性和无链接性,下面一起进入文章了解更具体内容吧
    2021-12-12
  • C++编程中的函数指针初步解析

    C++编程中的函数指针初步解析

    这篇文章主要介绍了C++编程中的函数指针初步解析,函数指针在C语言和C++学习中都是非常重要的知识,需要的朋友可以参考下
    2016-04-04
  • C++迷宫的实现代码

    C++迷宫的实现代码

    这篇文章主要为大家详细介绍了C++实现迷宫游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • 如何利用Matlab绘制出好看的火山图

    如何利用Matlab绘制出好看的火山图

    火山图是散点图的一种,它将统计测试中的统计显著性量度和变化幅度相结合,从而能够帮助快速直观地识别那些变化幅度较大且具有统计学意义的数据点。本文将通过Matlab绘制好看的火山图,需要的可以参考一下
    2022-03-03
  • C++的静态联编和动态联编

    C++的静态联编和动态联编

    本文阐述了静态联编和动态联编的概念和区别,通过具体实例分析了实现动态联编的条件,指出了虚函数是实现动态联编的基础。
    2016-03-03
  • C语言按关键字搜索文件夹中文件的方法

    C语言按关键字搜索文件夹中文件的方法

    这篇文章主要介绍了C语言按关键字搜索文件夹中文件的方法,涉及C语言文件操作及字符串查找的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C语言 while for do while循环体详解用法

    C语言 while for do while循环体详解用法

    在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件
    2021-10-10
  • 浅谈C语言中的注释风格小结

    浅谈C语言中的注释风格小结

    今天小编就为大家分享一篇浅谈C语言中的注释风格小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论