形参与实参的区别

形参与实参的区别,第1张

有以下区别:

1、主体不同:实参在调用有参函数时,函数名后面括号中的参数为“实际参数”。形参不是实际存在变量,又称虚拟变量。

2、目的不同:实参可以是常量、变量或表达式,无论实参是何种类型的量,在进行函数调用时,都必须具有确定的值,以便把这些值传送给形参。

需要注意当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。

以下三种情况调用拷贝构造函数:

① 当用类的一个对象去初始化该类的另一个对象时。

② 如果函数的形参是类的对象,调用函数时,将对象作为函数实参传递给函数的形参时。

③ 如果函数的返回值是类的对象时,函数执行完成,将返回值返回时。

Student B3(B1);这句就相当于第一种情况,你用B1去初始化B3,因此这肯定会有一次烤贝构造函数的调用。

而你定义的f()函数,如果函数的参数是一个类,即:Student f(Student Student1),这就相当于第二种情况,因此也会有一次烤贝构造函数的调用,但是如果是对象的引用的话,你可以去看看引用方面的知识,引用其实就相于建了指向它的一个指针,这时不算是第二种情况,也就是说当你定义为:Student f(Student &Student1)时,是没有烤贝构造函数的调用的。

而当你的函数有返回值时,且返回值为一对象时,就相当于第三种情况了,也就是说return Student1;也是有一次烤贝构造函数的调用的。

所以也就不难理解为什么改一下,调用的次数都不一样了。

拷贝构造函数这三种情况挺重要的,你只要记住这三种情况都会调用,其他情况不会调用拷贝构造函数就OK了~

亲,给个好评吧~~~

一般变量作为形参,是不能改变实参值的哦,要返回数据就用return;

指针指向真实的地址,不重新分配内存,所以调用函数后,如果函数里改变了指针指向的值,那这个数就真的变了。

调用就是用函数名,还要传送相应的调用参数。

当一个函数需要返回的结果不是一个简单的数据,而是一串数据或者是一组数据或者是里面申请了新的内存并返回时,就不能简单的将结果通过函数返回值进行返回了。可以通过指针或引用的方式将返回值放入形参中。比如主函数里有个int a。需要在一个函数f中动态为a申请一块空间,这时候就可以将f函数的参数中加入一个用于输出的int 类型的形参,调用时将a取地址传入f函数,然后f函数内部进行内存申请,再返回给主函数,这是主函数中的int a后面就有一堆内存了。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13495878.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存