2.8结构体( struct) 的使用

2.8.1结构体的定义
定义一个结构体的基本格式如下:
struct Name{
	//-些基本的数据结构或者自定义的数据类型
};

eg:
struct studentInfo {
	intid;
	char gender; //'F' or 'M'
	char name [20] ;
	char major [20] ;
}Alice, Bob, stu[1000] ;

studentInfo是这个结构体的名字,
而在大括号外定义了studentInfo型的Alice和Bob代表两个结构体变量;
之后的stu[1000]就是当有很多学生时定义的一个结构体数组
(如果不在此处定义变量或数组,则大括号外直接跟上分号)。

定义结构体变量和结构体数组除了可以像上面直接定义外,
也可以按照基本数据类型(int)那样定义:
studentInfoAlice;
studentInfostu[1000] ;

虽然不能定义自己本身,但可以定义自身类型的指针变量。例如:
struct node
	node n; / /不能定义node型变量
	node* next;
};
//可以定义node*型指针变量
2.8.2访问结构体内 的元素

访问结构体内的元素有两种方法: .操作和“->”操作。现在把studentInfo 类型定义
成下面这样:
struct studentInfol
	int id;
	char name [20] ;
	studentInfo* next;
}stu, *p;
这样studentInfo中多了一个指针next用来指向下一个学生的地址,且结构体变量中定义
了普通变量stu和指针变量p。

于是访问stu中变量的写法如下:
stu.id
stu. name
stu. next
而访问指针变量p中元素的写法如下:
这样写不够简洁:
(*p) .id
(*p) .name
(*p) .next
一般这样写。
p->id
p-> name
p-> next
2.8.3结构体 的初始化
struct studentInfo{
int id;
char gender ;
//下面的参数用以对结构体内部变量进行赋值
studentInfo(int id, char gender) {
	//赋值
	id = _id;
	gender = _gender;
当然,构造函数也可以简化成1:
struct studentInfo{
	int id;
	char gender; 
	studentInfo(int _id, char _gender): id(_id)gender(_ gender) {}
};
这样就可以在需要时直接对结构体变量进行赋值了:
studentInfostu = studentInfo(10086'M') ;

#include <stdio.h>
struct Point {
int x,y;
Point(){} / /用以不经初始化地定义pt[10]
Point(int _x, int _y): x(_x)y( _y){} //用以提供 x和y的初始化
}pt[10];
int main() {
	int num= 0;
	for(inti=1;i<=3;i++) {
		for(int j = 1;j<= 3;j++) {
		pt[num++] = Point(i, j) ;
	//直接使用构造函数
	for(inti=0;i<num;i++) {
		printf ("&d, d\n",pt[i].x, pt[i].y) ;
	}
return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值