结构体

结构体定义

(1)先定义类型,再定义变量

struct  PER 
		{
			char id[100];
			char name[100];
			char sex;
			int age;
		};
struct PER person;

(2)定义结构体类型名的同时定义变量名

struct  PER
		{
			char id[100];
			char name[100];
			char sex;
			int age;
		}person;

(3)省略类型名,直接定义结构体变量名
注意:如果省略类型名定义结构体,结构体变量名只能定义这一次;

	struct  
		{
			char id[100];
			char name[100];
			char sex;
			int age;
		}person;
	//只能在这里定义结构体变量   随后不能继续定义如 struct  person1;struct  person2等

(4)利用typedef定义结构体类型名,然后再定义结构体变量

typedef struct
		{
			char id[100];
			char name[100];
			char sex;
			int age;
		}PER;
		//这里的PER就类似于 (1)(2)的struct PER     
		//之后可以直接定义 PER person; PER student等等

结构体的大小

结构体是以4字节对齐进行开辟空间,可以说是4字节一个“单位”
比如(4)的结构体

typedef struct
		{
			char id[100];
			char name[100];
			char sex;
			int age;
		}PER;

这里 char id[100]占100个字节;----可以认为25个“单位”
char name[100];占100个字节;
char sex;占1个字节-----不足4字节 前后的变量都是整“单位” 所以sex占一个“单位” 即4个字节
int age;占4个字节 一个“单位”

所以 PER person 开辟空间大小是208个字节

再者

struct  STU
		{
			char phone[20];
			char name[50];
			char sex;
			int age;
			int score;
			
		}student;

char phone[20];占20个字节;----可以认为5个“单位”
char name[50];占50个字节;----可以认为12个“单位”再加上2个字节
char sex; 占1个字节;----它可以再加上之前的2个字节占一个单位的大小(地址连续)
int age; 占4个字节;----可以认为1个“单位”
int score; 占4个字节;----可以认为1个“单位”

所以该结构体开辟大小为80字节

引用

(1)通过变量进行引用 .
格式:变量名.成员名

struct  STU
		{
			char phone[20];
			char name[50];
			char sex;
			int age;
			int score;
			
		}student;
		//引用age   student.age    其他变量一样

(2) 通过指针进行引用成员 ->
格式:指针变量名->成员名

struct  STU
		{
			char phone[20];
			char name[50];
			char sex;
			int age;
			int score;
			
		}student;
		//定义指针  struct STU * p;   
		//引用age    p->age;  即可   其他变量同理

初始化

(1)定义结构体的同时初始化

struct  PER
		{
			char id[100];
			char name[100];
			char sex;
			int age;
		}person={"160413","张三",'n',18};
	  printf("%s",person.id);
	  printf("%s",person.name);
	  printf("%c",person.sex);
	  printf("%d",person.age);

(2)定义结构体变量的时候初始化

struct  PER
		{
			char id[100];
			char name[100];
			char sex;
			int age;
		};
		struct PER person={"160413","李必胜",'n',18};
	  printf("%s",person.id);
	  printf("%s",person.name);
	  printf("%c",person.sex);
	  printf("%d",person.age);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值