C++中如何判断一个参数是传入还是传出?

 我来答
百度网友b0e28cae4
推荐于2018-04-11 · TA获得超过4016个赞
知道大有可为答主
回答量:1275
采纳率:85%
帮助的人:593万
展开全部
C++中的参数,既可以当做传入参数,也可以当做传出参数,具体要看参数的数据类型。
1)非指针,非引用类型:一定是当做传入参数;
2)指针,引用类型:既可以当做传入参数;也可以当做传出参数;甚至可以同时是传入参数,也是传出参数。
3)要看参数到底是哪种类型,要看对参数进行的操作。
a. 如果是只有读取,没有修改的,那是当传入参数的,这是可以加上 const 限定符,以防不小心修改了参数。
b. 如果只有对参数进行写入,没有读取的,那是当做传出参数的。
c. 如果对参数先进行了读取操作,然后又进行了写入操作,那么是即当传入参数也当传出参数了。

举例:
#include <iostream>
using namespace std;

// 返回 a+b
int add(int a,int b)
{
return a+b;
}
// 计算 a+b 存入 c
void add(int a,int b,int *c)
{
// c 是指针类型,只有【写入】操作,因此当做传出参数
*c = (a+b);
}

// 计算 a+b 存入 c
void add(int a,int b,int& c)
{
// c 是引用类型,只有【写入】操作,因此当做传出参数
c = (a+b);
}

// 计算 a+b 存入 c ,同时交换 a b 的值
void addAndSwap(int &a,int &b,int &c)
{
// a,b 是引用类型,这里是进行【读取】操作,因此当做【传出】 参数
// c 是引用类型,只有【写入】操作,因此当做传出参数
c = (a+b);

// 下面交换 a b 的值
int t;
// a是引用类型,这里是进行【读取】操作,因此当做【传入】 参数
t = a;
// a是引用类型,这里是进行【写入】操作,因此当做【传出】参数
// b是引用类型,这里是进行【读取】操作,因此当做【传入】参数
a = b;
// b是引用类型,这里是进行【写入】操作,因此当做【传出】参数
b = t;

// 注意:当做传入参数,参数必须保留传入是的值。
// 已经修改参数的值,那么参数不能在当做【传入】参数使用了
// 如下:a是引用类型,但 a 的值在上面已经被改变(语句:a=b)
// 因此这里 a 不算是当做【传入】参数了,因为 a 不再是传入时的值了。
t = a;
}

int main(int argc, char *argv[])
{
int a,b,c;

// a,b都是【传出】 参数
a=1,b=2;
cout<<a<<"+"<<b<<"="<<add(a,b)<<endl;

// a,b都是【传出】 参数,c是指针类型的传出参数
a=3,b=4;
add(a,b,&c);
cout<<a<<"+"<<b<<"="<<c<<endl;

// a,b都是【传出】 参数,c是引用类型的传出参数
a=5,b=6;
add(a,b,c);
cout<<a<<"+"<<b<<"="<<c<<endl;

// a,b都是即是引用类型【传入】参数,也是引用类型【传出】参数;c是引用类型的传出参数
a=7,b=8;
cout<<a<<"+"<<b<<"=";
addAndSwap(a,b,c);
cout<<c<<endl;
cout<<"After swap,a="<<a<<",b="<<b<<endl;
return 0;
}
小 o
2012-03-05 · 知道合伙人IT服务行家
小 o
知道合伙人IT服务行家
采纳数:11 获赞数:161
深圳市奥斯恩净化技术有限公司 技术负责人 珠海创新人才奖

向TA提问 私信TA
展开全部
一般来讲,函数return 回来的东西是传出,函数使用的时候,实参就是传入。

但是,您也知道,有引用,与指针的情况,实参传入之后,如果在函数的改变了引用(或者指针对象)的值,那么,也实现了对实参的改变,也实现传出赋值的效果的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2012-03-05 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6331万
展开全部
函数的形式参数可以是传入的,也可以是传入、传出兼有的;函数的返回值肯定是传出的。完毕。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
斋傲云06
2012-03-05 · TA获得超过280个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:258万
展开全部
首先函数的参数肯定是传入,至于传出,看你是否要传出了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友28b4182
2012-03-05 · TA获得超过7218个赞
知道大有可为答主
回答量:4847
采纳率:100%
帮助的人:1771万
展开全部
传入的是在函数头上面定义的,传出的是return那个位置的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式