C++程序设计(三)—— 函数和函数模板

一、函数的参数及其传递方式

        C++的函数传递有两种传递方式:传值和伟引用。传值分为传“对象值”和“对象地址值”,“对象值”是指对象的数据成员值,“对象地址值”是指对象的首地址值。伟引用其实是传对象的地址。

        注意:传地址值传递的是值,不是地址;传地址传的是地址,不是地址值。传递对象地址值是使用对象指针作为参数,传递对象地址是使用对象引用作为参数。

1、对象作为函数参数

        将对象作为函数参数,是将实参对象的值传递给形参对象,这种传递是单向的。形参拥有实参的备份,当在函数中改变形参的值时,改变的是这个备份的值,不会影响原来实参的值,这种传值方式可以防止被调用的函数改变参数的原始值。

#include <iostream>
#include <string>
using namespace std;
void example1();
void swap1(string,string);//声明交换方法的函数原型
int main(){
	example1();
	return 0;
}

void example1(){
	string s1("过去"),s2("现在");//定义对象s1和s2
	cout << "交换之前:" << s1 << " " << s2 << endl;
	swap1(s1,s2);//使用传值方式传递s1和s2的数据成员值
	cout << "交换之后返回主函数:" << s1 << " " << s2 << endl;
	/**
	 * 交换之前:过去 现在
	 * 交换之后:现在 过去
	 * 交换之后返回主函数:过去 现在
	 */
}

void swap1(string s1,string s2){
	string temp = s1;
	s1 = s2;
	s2 = temp;
	cout << "交换之后:" << s1 << " " << s2 << endl;
};

2、对象指针作为函数参数

        将指向对象的指针作为函数参数,形参是对象指针,实参是对象的地址值。虽然参数传递方式仍然是传值,但因为形参传递的就是实参本身,所以当在函数中改变形参的值时,改变的就是原来实参的值。传对象地址值要用到对象指针,常使用的传对象地址值的方式,如传递类或结构对象的地址值、传递数组名。

void example2();
void swap2(string *,string *);
int main(){
	example2();
	return 0;
}

void example2(){
	string s1("过去"),s2("现在");
	cout << "交换之前:" << s1 << " " << s2 << endl;
	swap2(&s1,&s2);//使用传地址值的方式传递s1和s2的地址值
	cout << "交换之后返回主函数:" << s1 << " " << s2 << endl;
	/**
	 * 交换之前:过去 现在
	 * 交换之后:现在 过去
	 * 交换之后返回主函数:现在 过去
	 */
}

void swap2(string *s1,string *s2){//string类的对象指针s1和s2作为参数
	string temp = *s1;
	*s1 = *s2;
	*s2 = temp;
	cout << "交换之后:" << *s1 << " " << *s2 << endl;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值