博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实参、形参 C++
阅读量:4660 次
发布时间:2019-06-09

本文共 1350 字,大约阅读时间需要 4 分钟。

值传递方式:

1、普通调用,形参与实参为同样的类型

fun(int i)()

fun(Student stud)

()

main()

{  

fun(1);

Student s1;  

fun1(s1);

}

在函数中可以修改形参的值,但不能改变其对应的实参的值(形参的值变化无法传送到实参) 原因:在函数调用时将建立一个新的对象,是实参对象的拷贝,实参与形参分别占有不同的存储空间,无论形参是否修改都不会改变实参的值。 这种形式的虚实结合,会产生实参的拷贝。当传递的对象较大时,时间开销和空间开销都比较大。

2、使用指针作为函数参数

fun(int * i)

{}

fun(Student * stud)

{}

main()

{  

int i = 1;  

fun(&i);  

Student s1;  

fun1(&s1);

}

其实质也是值传递方式,只是传递的值是一个地址,实参将地址传递给形参,虚实结合后,实参与形参指向同样的地址。 其操作的都是同一个对象。 虚实结合时,也会产生实参的拷贝,为形参分配内存,用来存放指针值(即地址)

2、引用传递方式:用引用作为函数参数

fun(int& i){}

fun(Student& stud){}

main()

{

 int i = 1;  

fun(i);  

Student s1;

 fun1(s1);

}

不会为形参分配存储空间(常称为建立实参的一个拷贝),而是把实参的地址传递给形参(引用名),引用名也指向实参变量

/******************************************************/

1、普通调用

函数声明时fun(Student stud){};

而在调用时:

Student s1;  

fun1(s1);

/******************************************************/

2、使用指针作为函数参数

函数声明时fun(Student * stud){}

而在调用时:

Student s1;  

fun1(&s1);

/******************************************************/

3:
用引用作为函数参数

函数声明时:

fun(Student& stud){}

而在调用时:

Student s1;

 fun1(s1);

/******************************************************/

我一直不明白:

3中方式在声明与调用之间,实参与形参的对应关系是什么?

把红色部分实参与形参写到一起。。中间再加个等号。。原来是这样:

前提:

Student s1;

实参                    形参

Student stud    = s1    ;

Student *stud  =  &s1   ;

Student &stud  = s1    ;

好吧,You Know...

看后勿喷!

/******************************************************/

转载于:https://www.cnblogs.com/Vulkan/archive/2012/09/21/7530261.html

你可能感兴趣的文章
INNO SETUP 获得命令行参数
查看>>
HTML5与CSS3权威指南之CSS3学习记录
查看>>
docker安装部署
查看>>
AVL树、splay树(伸展树)和红黑树比较
查看>>
多媒体音量条显示异常跳动
查看>>
运算符及题目(2017.1.8)
查看>>
ssh自动分发密匙脚本样板
查看>>
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>
【 全干货 】5 分钟带你看懂 Docker !
查看>>
[转]优化Flash性能
查看>>
popStar手机游戏机机对战程序
查看>>
lambda表达式树
查看>>
二次注入原理及防御
查看>>
会话记住已登录功能
查看>>
Linux内核分析——可执行程序的装载
查看>>
第一阶段冲刺3
查看>>
父类引用指向子类对象
查看>>
网页如何实现下载功能
查看>>