background image

struct Point oPoint1={100,100,0};

struct Point oPoint2;

struct Point *pPoint; 

pPoint=& oPoint2; 

(*pPoint).x= oPoint1.x;

(*pPoint).y= oPoint1.y;

(*pPoint).z= oPoint1.z;

printf("oPoint2={%7.2f,%7.2f,%7.2f}",oPoint2.x

 

, oPoint2.y  

, oPoint2.z);

return(0);

}

程序运行结果如下:

oPoint2={ 100.00,100.00,0.00}

其中表达式&oPoint2 的作用是获得结构体变量 oPoint2 的地址。表达式 pPoint=&oPoint2 的

作用是将 oPoint2 的地址存储在结构体指针变量 pPoint 中,因此 pPoint 存储了 oPoint2 的

地址。*pPoint 代表指针变量 pPoint 中的内容,因此*pPoint 和 oPoint2 等价。

通过结构体指针变量获得其结构体变量的成员变量的一般形式如下:

(*结构体指针变量). 成员变量

其中 结构体指针变量 为结构体指针变量, 成员变量 为结构体成员变量名称, .”为取

结构体成员变量的运算符。

另外 C

语言中引入了新的运算符 ->”,通过结构体指针变量直接获得结构体变量的成员

变量,一般形式如下:

结构体指针变量-> 成员变量

其中 结构体指针变量 为结构体指针变量, 成员变量 为结构体成员变量名称, - >”为

运算符。

因此,例 9-3 中的部分代码

……

(*pPoint).x= oPoint1.x;

(*pPoint).y= oPoint1.y;

(*pPoint).z= oPoint1.z;