实参、形参 C++

值传递方式:

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...

看后勿喷!

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值