温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++中形参和实参的区别是什么

发布时间:2023-02-22 11:40:12 来源:亿速云 阅读:125 作者:iii 栏目:开发技术

今天小编给大家分享一下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;
    }

    输出结果:

    C++中形参和实参的区别是什么

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

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

    C++中形参和实参的区别是什么

    代码对应的内存分配:

    C++中形参和实参的区别是什么

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

    以上就是“C++中形参和实参的区别是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    c++
    AI