指向结构体的指针
运用指向结构体数组的指针输出学生信息
说明:指针指向结构体数组,就得到了该结构体数组的起始地址。
通过该地址能够訪问结构体数组中的全部成员变量。
当中,指向结构体的指针的算术运算与 指向数组的指针的使用方法相似。
#include<stdio.h>
#define N 10
//结构体类型及变量的定义,初始化
struct student
{
char *number;
char *name;
char sex;
int age;
float score;
}stu[3]={{"06001","Wang Chong",'m',22,78.5},
{"06002","Li Hua",'f',21,87.0},{"06003","Zhang Yang",'m',22,90.0}};
void main()
{
struct student *p;
printf("学生基本情况表:\n");
printf("编号 姓名 性别 年龄 成绩\n");
for(p=stu;p<stu+3;p++)//通过指向结构体的指针输出学生信息
printf("%-8s%12s%8c%8d%6d\n",p->number ,p->name ,p->sex ,p->age ,p->score );
}执行结果例如以下;
在上面的程序中,首先定义了一个指向结构体的指针变量p;在循环体中,指针指向结构体数组p=stu。即指针指向了结构体变量的起始地址。通过p->number,p->name等訪问各个成员。p+1表示数组中第二个元素stu[1]的起始地址。
p+2表示数组中第三个元素的起始地址,假设所看到的:
在结构体定义时,通常使用keywordtypedef建立已经定义好的数据类型的别名。比如:
typedef struct student StuInfo;
结构体类型student student的别名就被定义为StuInfo,这样StuInfo就成为一个结构体类型。能够利用StuInfo来定义结构体变量和指针变量,比如:
StuInfo stu[3], *p;
也能够利用typedef为基本数据类型建立别名,比如:
typedef int DataType;//这样DataType就跟int等效
使用keywordtypedef能够使程序有更好的可移植性。

浙公网安备 33010602011771号