运用指向结构体数组的指针输出学生信息
说明:指针指向结构体数组,就得到了该结构体数组的起始地址。通过该地址可以访问结构体数组中的所有成员变量。其中,指向结构体的指针的算术运算与 指向数组的指针的用法相似。
#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表示数组中第三个元素的起始地址,如果所示:
在结构体定义时,通常使用关键字typedef建立已经定义好的数据类型的别名。例如:
typedef struct student StuInfo;
结构体类型student student的别名就被定义为StuInfo,这样StuInfo就成为一个结构体类型,可以利用StuInfo来定义结构体变量和指针变量,例如:
StuInfo stu[3], *p;
也可以利用typedef为基本数据类型建立别名,例如:
typedef int DataType;//这样DataType就跟int等效
使用关键字typedef可以使程序有更好的可移植性。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/weichanjuan3/article/details/47011443