*问题:比如我要这么一个函数,入参有两个:a和b,出参有两个:计算是否成功succ、a除以b的结果result(b为0时非法,需要返回“计算失败”)
子函数部分:
这个例子中,succ,result通过传递指针的方式,授予了div函数改变外部变量的权利,间接实现了调用一个函数返回多个值。
void div(float a, float b, bool *succ, float *result){
*succ = b!=0;
if (*succ) { *result = a/b; }
}
主函数部分:
float a=12, b=10, result;
bool succ;
div(a, b, &succ, &result);
if (succ) { cout << "a/b = " << result <<endl;}
else {cout << "invalid arg" << endl;}
这个例子生动诠释了scanf函数内部封装的方式。