结构体指针
1. 定义结构体指针
现定义结构体如下:
typedef struct Student
{
int number;
char name[64];
char sex;
int age;
int score;
}student;
像定义其他普通变量定义结构体指针,如下:
student student1;
student *pstu;
pstu = &student1;
2. 通过结构体指针引用结构体变量中值
结构体通过 “.” 来引用结构体变量中的成员,比如想引用student1中的number,可以这样写:student1.number,因为pstu = &student1即*pstu = student1,所以 student1.number等价于(*pstu).number。
示例程序如下:
#include<stdio.h>
#include<string.h>
int main()
{
typedefstruct Student
{
intnum;
charname[64];
charsex;
intage;
intscore;
}student;
studentstu1 = {10001, "wangerma", 'm', 18, 100};
student*pt;
pt=&stu1;
printf("%d\t%s\t%c\t%d\t%d\n",stu1.num,stu1.name, stu1.sex, stu1.age, stu1.score);
printf("%d\t%s\t%c\t%d\t%d\n",(*pt).num, (*pt).name, (*pt).sex, (*pt).age, (*pt).score);
return0;
}
在上面的示例中,
(*pt).num, (*pt).name, (*pt).sex,(*pt).age,(*pt).score写起来较为麻烦,
所以C语言便提供了另一种更为常用的的写法:
(*). 等价于 ->
所以在上面的示例中,第二个printf()函数会被经常这样写:
printf("%d\t%s\t%c\t%d\t%d\n", pt->num, pt->name, pt->sex, pt->age, pt->score);