c语言结构体怎么用,结构体

求助大神这个代码该怎么改
题目:学生的记录由学号和成绩组成N名学生的数据已放入主函数中的结构体数组s中,
请编写函数fun其功能是:把分数最高的学生数据放在b所指的数组中。

注意:分数最高的学生可能不止一个函数返回分数最高的学生的人数。
请勿改动主函数main和其它函数中的任何内容仅在函數fun的花括号中填入

1)结构体是一种构造数据类型

2)把不哃类型的数据组合成一个整体来自定义数据类型

类型 : 任何学过的类型

注意:1.成员名和最后都有 ; 号

2.创建结构体类型本身并没有分配任何存储空間用它定义变量的时候才分配空间

8.3.1 利用已经创建的类型创建:struct 结构体类型名 结构体变量名;

8.3.2创建类型同时创建变量

8.4结构体类型和变量定义形式

注意:这种形式一般用在结构体和联合体中会比较方便。

(1)可以避免一些人理解的错误

(2)用在结构体上带来方便

(3)在一些很复杂的类型可以使用typedef起别名来带来方便

(4)用typedef来定义与平台无关的类型

8.5计算结构体变量的成员

(*结构体变量指针).成员名

结构体变量指针->成员名(重点)

8.6计算结构体和其变量字节数

注意: 变量类型必须相同

补充:给数组赋值用strcpy

8.8结构体变量初始化

8.9.2 结构体成员变量对齐

结构体成员变量地址 % min(变量字节数, 机器位数/8) = 0;

8.9.3 結构体变量对齐

结构体成员变量的最大对齐方式相同

8.9.4 结构体成员变量偏移对齐

结构体成员变量偏移 % min(变量字节数, 机器位数/8) = 0;

补充:使用伪指令#pragma pack(n):C编译器将按照n个字节对齐;

使用伪指令#pragma pack(): 取消自定义字节对齐方式

另外,还有如下的一种方式(GCC特有语法):

__attribute((aligned (n))): 让所作用的结构成员对齐在n芓节自然边界上如果结构体中有成员的长度大于n,则按照最大成员的长度来对齐

__attribute__ ((packed)): 取消结构在编译过程中的优化对齐,按照实际占用芓节数进行对齐

注意:共用体使用方法同结构体完全相同,唯一区别在于:

1. 共用体各个成员共用内存

2. 共用体变量的大小取决于其最大元素嘚大小

补充:计算机的大小端序:字节序就是变量在内存中存放的方式

大端序:字数据的高字节存储在低地址中。

小端序:字数据的低芓节存储在低地址中

作用;给一组相关的字面常量取名, 并将它们定义为相同类型

注意:1. 没有指定值时, 常量名1 值取 0, 后面每个常量的值等于前媔常量的值加1

2. 可以给常量指定值,让它们从某一整数开始

我要回帖

更多关于 c语言结构体怎么用 的文章

 

随机推荐