c语言结构体是什么?

Python013

c语言结构体是什么?,第1张

在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。

结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

结构体作用:

结构体和其他类型基础数据类型一样,例如int类型、char类型,只不过结构体可以做成你想要的数据类型。以方便日后的使用。

在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。

结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。

结构体c语言也就是C语言结构体,C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的,可以认为结构体是一种聚合类型。

C语言中,结构体类型属于一种构造类型(其他的构造类型还有数组类型,联合类型)。在实际开发中可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。

C语言结构体的特点

结构体和数组在处理多个对象的集合方面具有诸多相同点,因而它们在 C 语言中被统称为聚合类型。但两者也有明显的不同点,数组被用于高效处理“相同类型”的数据的集合,而结构体通常被用于高效处理“不同类型”的数据的集合(偶尔也会有成员类型全部相同的情况)。

1、可以通过位域来实现,如下:

struct int_16

{

unsigned a : 4 //占4位的部分变量名为a

unsigned b: 12 //占12位的部分变量名为b

}

2、在c语言中定义bit型变量,可以使用位域来自定义。

位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为:

struct 位域结构名

{ 位域列表 }

其中位域列表的形式为: 类型说明符 位域名:位域长度

示例:通过位域来计算IEEE754浮点数标准中,单精度浮点数的最大值、最小值以及最小弱规范数。

#include <stdio.h>

typedef struct FP_SINGLE

{

unsigned __int32 fraction : 23

unsigned __int32 exp : 8

unsigned __int32 sign : 1

} fp_single

int main()

{

float x

fp_single * fp_s = (fp_single *)&x

fp_s->sign = 0

fp_s->exp = 0xfe

fp_s->fraction = 0x7fffff

printf ("float 最大数: %le\n",(double)x)

fp_s->sign = 0

fp_s->exp = 0x1

fp_s->fraction = 0x0

printf ("float 最小数: %le\n",(double)x)

fp_s->sign = 0

fp_s->exp = 0

fp_s->fraction = 0x1

printf ("float 最小弱规范数:%le\n\n",(double)x)

return 0

}