C++ 函数传递结构的地址:
假设要传递结构的地址而不是整个结构以节省时间和空间,则需要使用指向结构的指针。调用函数时,将结构的地址传递给它。
为了充分使用指针的效率,应该使用指针而不是返回值,因此需要将两个指针传递给函数,第一个指针指向要转换的结构,第二个指针指向存储转换结果的结构。函数不会返回一个新的结构,而是修改调用函数中已有的结构,因此第一个指针需要是const型的指针,第二个参数不需要是。
例:
#include <iostream>
#include <cmath>
struct poplar
{
double distance;
double angle;
};
struct rect
{
double x;
double y;
};
void rect_to_poplar(const rect* pxy,poplar* pda);
void show_poplar(const poplar* pda);
int main()
{
using namespace std;
rect rplace;
poplar pplace;
cout << "Enter the x and y values: ";
while (cin>>rplace.x>>rplace.y)
{
rect_to_poplar(&rplace,&pplace);
show_poplar(&pplace);
cout << "Next two numbers(q to quit)";
}
cout << "Done.\n";
return 0;
}
void show_poplar(const poplar* pda)
{
using namespace std;
const double Rad_to_deg = 57.29577951;
cout << "distance = " << pda->distance;
cout << ", angle = " << pda->angle * Rad_to_deg;
cout << " degrees\n";
}
void rect_to_poplar(const rect* pxy, poplar* pda)
{
using namespace std;
pda->distance =
sqrt(pxy->x * pxy->x + pxy->y * pxy->y);
pda->angle = atan2(pxy->y,pxy->x);
}