结构体知识

结构体:

数组:数据类型相同的一组数据的集合。
结构体:数据类型不同的一组数据的集合(数据量多,大,丰富)。


结构体四种定义方式:

提醒:新手容易忘记在结构体右括号后面带上分号。

1.先定义结构体类型,再定义结构体变量

struct student{

int data;

};

struct student stu1;//stu1为student的结构体变量


2.定义结构体变量的同时,定义结构体变量

struct student{

int data;

}stu1;

如果想要继续定义结构体变量

struct student stu2;//这样既可以再次定义结构体变量


3.不定义结构体类型,而直接定义结构体变量

struct{

int data;

}stu1;

这样做的缺陷很大,这样的话我们就不能再次定义stu1该类型的结构体变量了,可移植性非常差,也不灵活。


4.用typedef 来定义结构体变量及类型

typedef sturct node{

int data;

}Binode (*pstu);

这样定义的话,结构体类型的名字就有了两(三)个分别为node和Binode,(pstu)自然定义结构体变量的方式也就有了两(三)种

1.struct node val1;
2.Binode val2;
3.pstu val3;(这个是命名成指针的用法)


结构体常犯的致命错误:

  • 当结构体中定义了指针变量,使用指针变量时要用malloc开辟空间,不然就会出现段错误。

结构体数组:

结构体数组定义方式:

struct studet stu[3];

使用方式:
它的使用和数组一样,用下标法遍历。
优点:
结构体可以多次使用,但不用多次定义。


结构体指针:

定义方式:

struct student *p;//野指针
p.score = 100; //这样写是错的,如果要用结构体指针,就不能用点运算符,访
问结构体中的变量就要用->(建号)。
p = (struct student *)malloc(sizeof(struct student));//野指针要赋予空
间才能使用,很重要。
free(p);//释放开辟的空间,不会造成浪费。
p = &stu1;//指针式存放地址的变量,之前指向的是malloc开辟的空间,现在指
针变量存放的是stu1的地址。
p++;//指针++后会偏移整个结构体的大小,计算结构体的大小去看收藏的老师写的
结构体的计算方式。


结构体的初始化方式:

这种方式在Liunx内核的代码中经常的使用,只不过有的编译器不支持这样写。

struct Animal{
	char name[128];
	int age;
	int sex;
	int others;
	void(*peat)();	
};
int main()
{
//struct Animal dog1 = {"阿黄",1,100,1,Dogbeat};
struct Animal dog{
	.name = "阿黄",
	.age = 1//这里是没有逗号的
};

}


这个定义方式,你想要哪个变量初始化,直接就可以初始化,不用在意顺序,也不用在意其他变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值