776

1、指向结构的指针通常比结构本身更容易控制。

2、早期结构不能作为参数传递给函数,但可以传递指向结构的指针。

3、即使可以传递结构,传递指针通常也更有效率。

4、一些用于表示数据的结构包含指向其他结构的指针。

实例

#include<stdio.h>
#defineLEN20

structnames//定义结构体names
{
charfirst[LEN];
charlast[LEN];
;

structguy//定义结构体guy
{
structnameshandle;
charfavfood[LEN];
charjob[LEN];
floatincome;
;

intmain(void)
{
structguyfellow[2]={
//这是一个结构嵌套,guy结构里嵌套了names结构
//初始化结构数组fellow,每个元素都是一个结构变量
{{"Ewen","Villard",
"girlledsalmon",
"personalitycoach",
68112.00
,
{{"Rodney","Swillbelly",
"tripe",
"tabloideditor",
432400.00

;


structguy*him;//这是一个指向结构的指针
printf("address#1:%p#2:%p\n",&fellow[0],&fellow[1]);
him=&fellow[0];//告诉编译器该指针指向何处
printf("pointer#1:%p#2:%p\n",him,him+1);//两个地址
printf("him->incomeis$%.2f:(*him).incomeis$%.2f\n",him->income,(*him).income);//68112.00
//指向下一个结构,him加1相当于him指向的地址加84。names结构占40个字节,favfood占20字节,handle占20字节,float占4个字节,所以地址会加84
him++;
printf("him->favfoodis%s:him->handle.lastis%s\n",him->favfood,him->handle.last);
//因为有了上面的him++,所以指向的是favfood1[1],
return0;





输出结果为
PSD:\Code\C\结构>cd"d:\Code\C\结构\";if($?){gccstructDemo02.c-ostructDemo02;if($?){.\structDemo02
address#1:000000000061FD70#2:000000000061FDC4
pointer#1:000000000061FD70#2:000000000061FDC4
him->incomeis$68112.00:(*him).incomeis$68112.00
him->favfoodistripe:him->handle.lastisSwillbelly