指向结构体类型的指针

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

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

代码示例:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值