传递结构的地址-函数原型与传递参数的有关问题

传递结构的地址---函数原型与传递参数的问题
#include<iostream>
using namespace std;
#include<cmath>
struct polar
{
double distance ;
double angle;
};

struct rect
{
double x;
double y;
};

void rect_to_polar(const rect *pxy,polar * pda);  
void show_polar(const polar *pda); //这里函数原型直接定义指针为参数
int main()
{  
rect rplace;
  polar pplace;
rect * rp = &rplace;
polar *pp = &pplace;
   
cout<<"enter the x and y values:\n";
while(cin>>rplace.x>>rplace.y)
{
rect_to_polar(&rplace ,&pplace); //而这里传递进来的是 结构的地址、、而原型函数要求的是指针?

// rect_to_polar(rp,pp); //这里传递的是指针,效果一样
show_polar(&pplace);

cout<<"next two numbers (q to quit) :";

}

cout<<"done good job !\n";

return 0;

}
void show_polar(const polar *pda)
{
const double Rad_to_deg = 57.295;

cout<<"distance = "<<pda->distance<<endl;
cout<<"angle = "<<pda->angle*Rad_to_deg<<"degrees\n";

}

void rect_to_polar(const rect *pxy,polar *pda)
{
pda->distance = sqrt(pxy->x*pxy->x+pxy->y*pxy->y);

pda->angle = atan2(pxy->y,pxy->x);
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
问题 :
原型函数的参数是 指针
而main函数里
传递的形式是这样
rect_to_polar(&rplace ,&pplace); 是一个结构对象的地址,不是指针
void rect_to_polar(const rect *pxy,polar *pda);//这2个是怎么实现匹配的?  

想请问一下:
  这个要求传递指针,而传递进来的是地址,
  如何把型参 : 结构对象的地址与原型函数里的指针进行匹配的
  或者这么说吧 把结构对象的 地址 转化为指针的值的(这个表达得不太恰当)
   
  不好意思 表达得不是很好 希望各位有错的地方指正或者提出更好的 描述

  各位 先 谢谢了!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


------解决方案--------------------
指针也是地址的表现形式,通常地址采用指针来表示。

如:polar *pp = &pplace; 将pplace的地址赋值给指针pp
------解决方案--------------------
而这里传递进来的是 结构的地址、、而原型函数要求的是指针?
//指针指向的是个地址。
//它要求一个指针,实际上就是要一个地址,所以传地址可行
//指针变量的值实际就是一个地址,所以传指针变量也可行
------解决方案--------------------
rect_to_polar(&rplace ,&pplace); 是一个结构对象的地址,不是指针 

这里就涉及到形参实参的问题。指针是保存地址的变量,你传进去的是地址,不是指针没错
但是到具体调用时,函数会生成一个临时指针变量保存&rplace ...

类似:如同使用函数传值 void (int a )
这样调用
int n =3; a(n);时,函数会生成一个临时变量保存n,不会改变n的值

但是你传的是地址的话,会改变值,但是生成临时变量的效果不变