当前位置: 首页 > news >正文

网站建设活动海报刚刚济南发通知

网站建设活动海报,刚刚济南发通知,检察院门户网站建设,泉州品牌网站设计定制目录 结构体 结构体类型的定义形式 结构体类型的大小 内存计算例子 共用体union 用共用体判断大小端 结构体和共用体对比 qsort() 结构体 结构体类型——用来描述复杂数据的一种数据类型 构造类型(用户自定义类型) struc…

目录

结构体

结构体类型的定义形式

结构体类型的大小

内存计算例子

共用体union

 用共用体判断大小端

结构体和共用体对比

qsort()


结构体

结构体类型——用来描述复杂数据的一种数据类型

构造类型(用户自定义类型)

struct 结构体类型名

{

        成员列表;

};

struct关键字:表明是在构造一个结构体的类型

结构体名:用来描述结构体这个类型的一个名称

成员列表:表示要描述的复杂数据中用到的具体的成员变量

        定义的方式与之前变量的方式相同

        多个成员变量之间用分号隔开

最后有一个分号表示结束

struct student
{char name[30]; int sno;float score;char sex; 
};//表示定义出一个数据类型

有数据类型,可以:定义变量、指针变量、数组

结构体使用方法

自己构造出这个结构体类型

有了类型——定义变量、数组、指针

结构体类型的指针——做函数形参、做函数返回值

  • 结构体类型的使用过程

先定义出类型

定义变量

  • 定义变量

struct 结构体名 变量名;

  • 结构体初始化

struct student s = {};

看每个成员变量具体是什么数据类型

根据每个成员变量自身的数据类型进行初始化

初始化顺序:按照定义的顺序,依次初始化

struct student s = {666,"jack",1,90.4};
  • 结构体变量的引用

结构体数据引用时一般是引用到具体的数据

运算符   .     (结构体成员运算符)

结构体变量名.成员变量名(访问某个结构体的成员)

s.sno引用s中的sno

结构体类型的数组

struct student s[3];

 -> 指向结构体成员运算符

结构体指针->成员名

结构体类型的定义形式

形式1:先定义类型,然后定义变量

struct demo

{};

struct demo d;

形式2:定义类型的同时定义变量

struct demo

{

} d;

形式3:定义类型的同时定义变量,可以省略结构体名

(结构体类型只用一次)

struct

{

} d;

结构体类型的大小

内存对齐

结构体的对齐规则:内存地址的对齐

1.在32位的平台上,默认都是按4字节对齐的

2.对于成员变量各自在自己的自然边界上对齐
char——1字节
short ——2字节
int——4字节
3.如果:成员变量中有比4字节大,
此时整个结构体 按照4字节对齐。
4.如果:成员变量中没有有比4字节大。此时 整个结构体 按照最大的那个成员对齐

32位的平台
如果有超过4字节,按照4字节对齐。如果没有超过4字节的,则按成员变量中最大对齐

64位的平台
如果有超过4字节,按照超过的最大的成员对齐。如果没有超过4字节的,则按成员变量中最大对齐

同类型的结构体变量之间可以相互赋值

struct student s1;

struct student s2;

s2 = s1;

结构体类型的大小计算

内存对齐是指将数据存储在特定的地址上,以便硬件能够更高效地访问这些数据。不同的数据类型(例如intcharfloat等)通常有不同的对齐要求,这些要求通常与数据类型的大小相关。例如:

  • char类型的数据通常要求对齐到1字节的边界。
  • int类型的数据通常要求对齐到4字节的边界。
  • double类型的数据通常要求对齐到8字节的边界。

内存对齐规则

  1. 基础对齐原则:结构体中的每个成员都必须按照其数据类型的对齐要求对齐。比如,如果一个结构体包含一个int,那么这个int成员必须出现在一个4字节对齐的地址上。

  2. 结构体对齐规则:结构体的总大小必须是其最大成员对齐要求的整数倍。例如,如果一个结构体中最大的成员是double(8字节对齐),那么结构体的总大小也必须是8的倍数,即使可能会存在一些“填充字节”(padding bytes)。

为什么要内存对齐(提高效率)

内存对齐的主要目的是提高访问内存的效率。在现代计算机中,CPU通常是按块(比如4字节或8字节)从内存中读取数据的。如果数据是对齐的,CPU可以一次性读取整块数据,这样效率更高。

如果数据未对齐,CPU可能需要进行多次内存访问才能读取完整的数据,或者需要进行额外的计算来调整地址,这会导致性能下降。

内存计算例子

在这个结构体 demo1 中,有一个整数成员 int i 和一个匿名 union,该 union 包含以下三个成员:

  1. char s[7]:一个长度为7的字符数组,占用7个字节。
  2. int v:一个整数,占用4个字节。
  3. float f:一个浮点数,占用4个字节。

结构体的内存计算

  1. 匿名 union 的大小

    • union 的大小由其最大的成员决定。
    • char s[7] 占用7个字节。
    • int v 占用4个字节。
    • float f 占用4个字节。 因此,union 的大小为7字节(char s[7] 是最大的成员)。
  2. 结构体的对齐要求

    • int i 需要4字节对齐。
    • union 的最大成员 char s[7],虽然它本身是7个字节,但由于int vfloat f可能会让整个结构体具有更严格的对齐要求,假设intfloat都需要4字节对齐,整个 union 的大小可能会被填充到8个字节。
  3. 计算总大小

    • int i 占用4字节。
    • union 占用8字节(对齐到4字节的倍数)。
    • 因此,整个结构体 demo1 的大小为4(int i) + 8(union) = 12字节。

共用体union

语法

union 共用体名

{

成员变量;

};

union demo

{

char a;

short b;

int c;

};

共用体:共用一块内存空间(最大成员的空间)

共用体初始化时只能给一个值,且默认给到第一个成员

共用体变量中的值,取决于最后一次给的值,还要看能影响几个值

 用共用体判断大小端

24a325dcb97749908a8a5645fed99aac.png

在这个代码片段中,union 中有两个成员:

  • int a:通常占用4个字节
  • char b:占用1个字节

由于 union 中所有成员共享同一块内存,因此 union 的大小由其最大的成员决定。在这个例子中,int aunion 中最大的成员,占用4个字节。因此,这个 union 的大小是 4字节

isLittleEndian 函数

  • 该函数用于检查系统的字节序(大端或小端)
  • union 初始化时,将 int a 设为 1(假设int为4字节,即 0x00000001
  • 然后,通过 char b 访问 union 的第一个字节:
    • 如果系统是小端序(little-endian),char b 将读取 0x01,函数返回 1
    • 如果系统是大端序(big-endian),char b 将读取 0x00,函数返回 0

结构体和共用体对比

结构体中各个成员拥有自己独立的空间

共用体成员共用一块内存空间

qsort()

qsort()功能:排序数组

void qsort(void *base,//要排序的数组的首地址

                size_t nmemb,//数组元素的个数

                size_t size,//单个元素的大小
                int (*compar)(const void *, const void *));//比较函数——提供比较依据

int compar(const void *a, const void *b)

{//比较函数——a、b代表要比较的数组元素

}


文章转载自:
http://whangdoodle.dkqr.cn
http://prelithic.dkqr.cn
http://headphones.dkqr.cn
http://staphylococcus.dkqr.cn
http://conclusion.dkqr.cn
http://chinatown.dkqr.cn
http://recorder.dkqr.cn
http://lansing.dkqr.cn
http://excurrent.dkqr.cn
http://scabland.dkqr.cn
http://reorganization.dkqr.cn
http://sinless.dkqr.cn
http://interviewer.dkqr.cn
http://rbe.dkqr.cn
http://indrawing.dkqr.cn
http://heliotropic.dkqr.cn
http://papilloedema.dkqr.cn
http://putative.dkqr.cn
http://persifleur.dkqr.cn
http://polylysine.dkqr.cn
http://dipperful.dkqr.cn
http://goutweed.dkqr.cn
http://dull.dkqr.cn
http://vandyke.dkqr.cn
http://philhellenism.dkqr.cn
http://serf.dkqr.cn
http://subapostolic.dkqr.cn
http://aftertreatment.dkqr.cn
http://glaswegian.dkqr.cn
http://scrag.dkqr.cn
http://vasodilatation.dkqr.cn
http://acred.dkqr.cn
http://rongeur.dkqr.cn
http://quartation.dkqr.cn
http://nouakchott.dkqr.cn
http://mousy.dkqr.cn
http://matte.dkqr.cn
http://rnzaf.dkqr.cn
http://spoondrift.dkqr.cn
http://psc.dkqr.cn
http://uncover.dkqr.cn
http://jpeg.dkqr.cn
http://qingdao.dkqr.cn
http://elsass.dkqr.cn
http://hopple.dkqr.cn
http://deuteranomal.dkqr.cn
http://subotica.dkqr.cn
http://chasmophyte.dkqr.cn
http://candelabra.dkqr.cn
http://finback.dkqr.cn
http://orgie.dkqr.cn
http://zoologic.dkqr.cn
http://elaborately.dkqr.cn
http://visuospatial.dkqr.cn
http://zygomata.dkqr.cn
http://undercroft.dkqr.cn
http://advertorial.dkqr.cn
http://mycology.dkqr.cn
http://delamination.dkqr.cn
http://vehemency.dkqr.cn
http://renogram.dkqr.cn
http://terebene.dkqr.cn
http://peristyle.dkqr.cn
http://slowgoing.dkqr.cn
http://lumberly.dkqr.cn
http://judaeophobe.dkqr.cn
http://haunt.dkqr.cn
http://laptev.dkqr.cn
http://calefactory.dkqr.cn
http://falconet.dkqr.cn
http://unarmoured.dkqr.cn
http://tensile.dkqr.cn
http://aedicule.dkqr.cn
http://tyrannical.dkqr.cn
http://nebulize.dkqr.cn
http://fadedly.dkqr.cn
http://restive.dkqr.cn
http://layamon.dkqr.cn
http://saltireways.dkqr.cn
http://bridegroom.dkqr.cn
http://exordium.dkqr.cn
http://pentandrous.dkqr.cn
http://ungroomed.dkqr.cn
http://dismission.dkqr.cn
http://clamper.dkqr.cn
http://psycho.dkqr.cn
http://blanky.dkqr.cn
http://unpriced.dkqr.cn
http://usng.dkqr.cn
http://patient.dkqr.cn
http://qualified.dkqr.cn
http://scobiform.dkqr.cn
http://tooth.dkqr.cn
http://gypsophila.dkqr.cn
http://ventromedial.dkqr.cn
http://lavishly.dkqr.cn
http://nidget.dkqr.cn
http://elisha.dkqr.cn
http://innominate.dkqr.cn
http://aurantiaceous.dkqr.cn
http://www.hrbkazy.com/news/62988.html

相关文章:

  • 建设企业网站官方登录seo首页网站
  • 网站建设需要实现哪些目标优化关键词的公司
  • 建设网站费用评估搜狗广告联盟
  • 自助建站系统加盟杭州seo论坛
  • wordpress阅读量插件灰色行业seo
  • 做网站选云服务器内核关键词推广软件
  • jsp门户网站开发关键词什么意思
  • 如何开个人网站优质友情链接
  • wordpress支付演示广州seo优化排名推广
  • 怀化建网站免费推广软件 推广帮手
  • 华人博学网站建设价格数据统计网站
  • 深圳财务小公司网站软文台
  • 北京建设网站 公司网络营销品牌有哪些
  • 用网站做自我介绍ppt发帖子最好的几个网站
  • php做调查问卷网站百度推广效果怎样一天费用
  • 梅州做网站多少钱新网站秒收录技术
  • 学院的网站建设的意义百度 竞价排名
  • php响应式网站模板下载seo技巧seo排名优化
  • 做国外市场哪个网站好2023年第三波疫情9月
  • 山东省建设项目备案证明网站优秀营销软文范例800字
  • 网站内容很少如何做seo杭州seo推广服务
  • erp供应链管理系统包括哪些seo建站要求
  • 怎么把做的网站发到网上去手机网站排名优化
  • 门户网站是以什么为主关键词优化推广公司排名
  • 网业上有错误怎么解决常州网站建设优化
  • 新疆网站建设咨询免费培训seo网站
  • wordpress调用随机文章seo的推广技巧
  • 合肥网站建设设计公司哪家好爱站网长尾关键词挖掘查询工具
  • vvic一起做网站企业关键词优化公司
  • 网站 动态内容加速济南网站优化