一、结构体指针的定义
定义结构体我们很熟悉了,定义一个名称为student的结构体如下:
struct student //首先定义一个结构体
{
char num[11];
char name[21];
int age;
float score;
};
定义一个正常的指针变量我们也很熟悉:
基类型* 指针变量名
定义一个结构体指针也一样,下面我们定义了一个结构体变量st1和一个结构体指针p。
并且让指针p指向st1
int main(void)
{
struct stdent st1,*p;
p=&st1;
}
二、使用结构体指针来引用结构体成员
借助成员运算符“.”
其一般形式为:
(*结构体指针变量).成员名
“.”的优先级高于“*”因而必须加(),否则等同于(*结构体指针变量.成员名)导致语法错误,作为一个指针变量不可能有成员。
下面是结构体指针引用结构体成员进行输入输出的示例:
int main(void)
{
struct stdent st1,*p;
p=&st1;
scanf("%d%f",&(*p).age,&(*p).score);
printf("%d%f",(*p).age,(*p).score);
}
虽然这样的表述很直观,但是比较繁琐,因此C语言为我们提供了另一种表述形式
其一般形式为:
结构体指针变量->成员名
下面是这种写法的示例:
int main(void)
{
struct stdent st1,*p;
p=&st1;
scanf("%d%f",&p->age,&p->score);
printf("%d%f",p->age,p->score);
}