结构体

结构体的定义

struct Student{				      //struct Student就是结构体名
	int num;
	char name[20];
	char sex;
	int age;
	float score;
	char addr[30];
}

定义方式

struct 结构体名{ 成员列表  };			//成员列表也被称为域表

定义结构体变量

(a)先声明,后定义变量

struct Student{				     
	int num;
	char name[20];
	char sex;
	int age;
	float score;
	char addr[30];
}
struct Student student1,student2;

定义结构体变量后,系统会为它分配内存单元。根据结构类型中成员列表的情况,相加后就是结构体变量的字节大小。分配的内存是连续的

&student1=&student1.num;
&student1.name=&student1.num加上四个字节地址;

(b)声明的同时定义变量

struct 结构体名{成员列表} 变量名列表;
struct Student{				     
	int num;
	char name[20];
	char sex;
	int age;
	float score;
	char addr[30];
}student1,student2;

结构体变量初始化和引用

(a)定义变量时初始化

struct Student{				     
	int num;
	char name[20];
	char sex;
}student1={0,”bbbb”,'g',23};

或者

struct Student{				     
	int num;
	char name[20];
	char sex;
};
struct Student student1={0,”bbbb”,'g',23};

C99中允许对某一个成员初始化:

struct Student student1={.name=”bbbbb”};

没有初始化的数值为0,字符为’\0’,指针为NULL。

(b)引用结构体变量成员名

结构体变量名.成员=值

若结构体中的成员本身是一个结构体,则可以用.递进引用最底层成员。

student.birthday.month

通过引用可以给成员变量赋值和运算

(c)结构体变量可以互相赋值

struct Student student1={0,”bbbb”,'g','23'};
struct Student student2;
student2=student1;

结构体数组和指针

(a)定义结构体数组

struct Student{					//14个字节
	int num;
	char name[10];
}stus[3]={0,”aaa”,1,”bbb”,2,”ccc”};

(b)指向结构体变量的指针

其实在定义一个结构体类型后,这个结构体类型就成了一个类似于int、char等的类型。
Struct Student就是类型名。
因此指针可以定义为:

struct Student *pointer_s;
pointer_s=&student1;

但是在引用时需要注意,由于.(点号)是所有操作符中运算优先级最高的,因此访问时应该:

(*pointer_s).num;

在c语言中,(*pointer).等价于pointer->

(*pointer_s).num    ==       pointer_s->num

(c)用指针指向数组

struct Student *p=stus;
(++p)->num;				//先加1,再指向num
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值