指向结构体类型的指针

结构体变量的指针就是该变量所占据的内存段的起始地址。可以定义一个指针变量来指向一个结构体变量,也可以动态分配内存存放结构体各成员数据。

与指向普通数据类型的指针变量相同,也可以定义指向结构体数据类型的指针变量。

代码示例:

#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相当于使用指向结构体类型的指针类型

猜你喜欢

转载自blog.csdn.net/yooppa/article/details/113518430