结构体变量的指针就是该变量所占据的内存段的起始地址。可以定义一个指针变量来指向一个结构体变量,也可以动态分配内存存放结构体各成员数据。
与指向普通数据类型的指针变量相同,也可以定义指向结构体数据类型的指针变量。
代码示例:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _info
{
int number;
char name[20];
char *address;
}Info,*pInfo;
int main()
{
Info te={
1001,"Zhao"};
pInfo p,q;
te.address=(char*)malloc(80);
strcpy(te.address,"RenMinNanLuErDuan");
printf("No:%d name:%s address:%s\n",te.number,te.name,te.address);
p=&te;
printf("No:%d name:%s address:%s\n",(*p).number,(*p).name,(*p).address);
q=(pInfo)malloc(sizeof(Info));
q->number=1002;
strcpy(q->name,"Qian");
q->address=(char*)malloc(80);
strcpy(q->address,"ChangLeXiaoQu");
printf("No:%d name:%s address:%s\n",q->number,q->name,q->address);
free(te.address);
free(q->address);
free(q);
return 0;
}
在引用结构体成员时,有以下三种方法可以使用。
结构体变量名.成员名
(*指针变量名).成员名
指针变量名->成员名
指向结构体运算符"->"(由减号、大于组成)专用于指向结构体类型的指针变量。若指针变量指向结构体变量,则三种写法相等。
另外在本代码中使用typedef时,不仅将该结构体声明了一种新名称Info,还将该结构体指针声明为pInfo。即使用Info相当于使用结构体类型,使用pInfo相当于使用指向结构体类型的指针类型