#include <iostream>
using namespace std;
struct POD
{
int i;
char c;
bool b;
double d;
};
void Func(POD *p) { ... // change the field of POD }
void ModifyPOD(POD &pod)
{
POD tmpPOD = {};
pod = tmpPOD; // first initialize the pod
Func(&pod); // then call an API function that will modify the result of pod
// the document of the API says that the pass-in POD must be initialized first.
}
int main()
{
POD pod;
ModifyPOD(pod);
std::cout << "pod.i: " << pod.i;
std::cout << ", pod.c: " << pod.c;
std::cout << " , pod.b:" << pod.b;
std::cout << " , pod.d:" << pod.d << std::endl;
}
问题&GT;我需要设计一个修改传入变量pod
的函数。以上函数名为ModifyPOD是否正确?首先,我通过使用本地结构(即tmpPOD)的值分配结构(即pod)来初始化结构。然后,变量传递给Func。
我使用局部变量初始化pod,以便我可以避免执行以下操作:
pod.i = 0;
pod.c = ' ';
pod.b = false;
pod.d = 0.0;
但是,我不确定这种做法是否合法。
谢谢
答案 0 :(得分:0)
是的,这是合法的。我只想补充一点,你可以做到
pod = POD();
Func(&pod);
在ModifyPod()
函数中,这是等效且更简单的。