C++primer第五版 编写一个函数,令其接收两个参数,一个是int型的数,另一个是int指针。函数比较int的值和指针所指的值,返回较大的那个。

该题目主要是为了熟悉函数参数的几种传递方式。定义函数形参时,可以定义成传值(本身)、传指针(*)、传引用(&)。如果只是访问参数值,不对其进行修改,那么这三种方式都是可以的。例如该题目,就仅仅是比较两个参数的大小,并没有对参数本身进行修改,因此传值和传指针都是可行的。

附上代码:

// primer_6_2_4.cpp : Defines the entry point for the application.
// 编写一个函数,令其接收两个参数,一个是int型的数,另一个是int指针。函数比较int的值和指针所指的值,返回较大的那个。

#include "stdafx.h"
#include<iostream>
using namespace std;

int main()
{
	int fun_max(int,int*);  //函数声明,两个参数,一个是int型的数,另一个是int指针
	int a,b,*p;  //定义两个int型变量a,b用于接收用户输入数据,指针p用于指向b
	int max;  //定义一个int型变量存放最大值
	cout << "input two numbers: " << endl;  //提示用户输入
	cin >> a >> b;
	p = &b;  //将指针p与数据b关联
	max = fun_max(a,p);  //调用函数求最大值
	cout << "the max number is: " << max << endl;  //打印最大值
	system("pause");
	return 0;
}
int fun_max(int aa,int*bb)  //求最大值的函数
{
	int result;  //函数范围内有效的局部变量,用于存放最大值
	if(aa > *bb)  //aa为数,bb为指针,因此aa必须与解引用*bb比较
		result=aa;
	else
		result=*bb;
	return result;  //返回最大值
}

效果如下:

但是如果要对参数进行修改,例如交换参数值,将参数值扩大几倍等等,就不能用传值方式,因为当实参的值拷贝给形参时,形参和实参是两个相互独立的对象,函数对形参做的所有操作都不会影响实参。但是如果是传指针,那么拷贝的是指针的值,可以让我们间接地访问它所指的对象。传引用和传指针是类似的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值