11 指针(三)-c语言初学系列

指针3

11.1 指向结构体变量的指针变量

11.2 指向结构体数组的指针变量

11.3 结构体数据作函数参数

11.1 指向结构体变量的指针变量

指针变量不仅可以指向基本类型变量,也可以指向结构体类型变量及其成员

已知一个结构体变量per,age是它的一个成员,则成员age 的表示形式为per.age,它的地址为&per.age,由于per.age是一个基本类型,所以指向结构体变量的成员的指针变量的定义和使用与指向一个基本类型的指针变量相同。

而对于结构体变量per也是有起始地址的,它的表示形式为&per,即等于结构体变量per所占内存区域的首地址。

指向结构体变量的指针变量的定义形式与一般指针变量的定义形式相同,只是将其指向类型定义为结构体类型即可。例如:

struct  person  *p;

对结构体变量成员的引用

结构体变量名.成员名

 (* 指针变量名).成员名

指针变量名->成员名

已知:struct  person   per , *p;   p=&per; 

则下列形式等价

printf("%s%3c%4d%7.1f\n",per.name, per.sex, per.age, per.height);
printf("%s%3c%4d%7.1f\n",(*p).name, (*p).sex, (*p).age, (*p).height);
printf("%s%3c%4d%7.1f\n",p->name, p->sex, p->age, p->height);

注意:p是指向struct person结构体类型变量的指针变量,它不能指向结构体变量的成员

11.2 指向结构体数组的指针变量

指针变量也可以指向结构体数组。

struct  person
   { char name[20];
     char sex;  
     int age; 
     float height;
     }per[3]={{ "Li Ping", 'M ',20,175},
{"Wang Ling", 'F ',19,162.5},{"Zhao Hui", 'M ',20,178}};
 struct  person  *p;
 for (p=per;p<per+3;p++)
    printf("%–18s%3c%4d%7.1f\n ", p->name, p->sex, p->age, p->height);

11.3 结构体数据作函数参数

结构体变量的成员可以作函数参数,结构体变量以及指向结构体变量的指针都可作函数参数

结构体变量的成员作函数参数

结构体变量的成员可以是简单变量、数组等,它们可以进行其类型所允许的各种操作,也包括作为函数参数

例11.1中定义的结构体变量per的成员name,即per.name作实参,其用法同字符数组名作为函数实参一样。使用per.age作实参与一般int型变量作实参的用法相同。

结构体变量的成员作实参与简单变量、数组元素等作实参是一样的

结构体变量作函数参数

将整个结构体变量作为函数参数传递。传递的是结构体变量全部成员的值,将实参中成员的值赋给对应的形参成员。

void output(struct  person  p)
{printf("%s%3c%4d%7.1f",p.name,p.sex,p.age,p.height);}
void main()
{ struct  person  per;
  ……     ……
   output(per);}

指向结构体变量的指针作函数参数

使用指向结构体的指针作函数实参,形参也必须是一个指向相同结构体类型的指针变量,其它使用方法不变。

void output( struct  person  *p )
{printf("%–18s%3c%4d%7.1f\n ",p->name,p->sex, p->age, p->height);}
void main()
{ struct person *ptr , per[3]={{"Li Ping", 'M ',20,175}……};
 ptr=per;
 for(;ptr<per+3;ptr++)  output(ptr);
}

ps: 对应ppt模板下载地址如下:

)11-指针(三)-自己使用的C语言教程PPT-适合老师备课或者自学.pptx-C文档类资源-CSDN下载(


 

 全部课程的PPT已经整理好了,需要的童鞋可以点击下载
总-自己使用的C语言教程PPT-适合老师备课或者自学-15篇PPT合集.zip-C文档类资源-CSDN下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锁住子锁不住

老少爷们向前冲!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值