指向结构体的指针

运用指向结构体数组的指针输出学生信息

说明:指针指向结构体数组,就得到了该结构体数组的起始地址。

通过该地址能够訪问结构体数组中的全部成员变量。

当中,指向结构体的指针的算术运算与 指向数组的指针的使用方法相似。

#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能够使程序有更好的可移植性。

posted @ 2017-04-28 15:09  jzdwajue  阅读(338)  评论(0)    收藏  举报