指针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下载