当前位置: 网站首页>网站建设>网络推广

【网站优化】高端!网站定制/设计/优化/二次开发/制作/搭建-塔城高端网站建设【简单基础中小型网站】

发表日期: 2022-09-01 14:38:43 浏览次数:113

上往建站提供网站建设网站推广网店设计网站建设企业网站网站制作网页设计网站建设企业网站制作网页制作   高端定制网站建设H5页面设计开发微网站微信运营移动端设计开发手机端网站小程序,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设网络推广微信公众号代运营、商城小程序开发定制网店设计等业务,专业团队服务,效果好。。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)

高端!网站定制/设计/优化/二次开发/制作/搭建-塔城高端网站建设

网站建设.png

  1. 讲一下为什么 struct ONE_BYTE,其 3 个位域都是 char 类型,所以可以按照位的顺序存储(不用分字节),1+1+4=6 位,占用 1 个字节。

    struct TWO_BYTE,道理同上,4+4+4+4=16 位 =2 个字节。

    struct THREE_BYTE,道理同上,4*5=20 位,占 3 个字节(不足的 4 位补 0)。

    struct FOUR_BYTE,其 2 个位域都是 int 类型,所以可以按照位的顺序存储(不用分字节),一个 int 类型占 4 个字节,刚好 16+16=32 位 =4 个字节。为 int 类型所占字节数的 1 倍(整数倍),所以 sizeof(four_byte)=4

    struct EIGHT_BYTE,其 2 个位域为不同的类型,所以它们的位值不能写到一个字节里面(不能按连续字节存储),那么,ccc1 就占第 1 个字节(地址0)的第 1 位;那么再来找 ccc2 存储的字节,因为其为 int 型,而 int 型占用 4 个字节,因此系统默认就要从 4 的整数倍的地址存它,也就是说要么存第 1 到第 4 个字节(地址0-地址3),要么存第 5 到第 8 个字节(地址4-地址7),……,以此类推,但是第 1 个字节(地址0),已经存了 ccc1 了,所以它就只能存第 5 到第 8 个字节,至于其前面的 3 个字节,补0;因此最后判断 eight_byte 占用 8 个字节,最后验证 8 个字节数刚好是 EIGHT_BYTE 结构体中占用最宽字节数的类型(int型)——4个字节的整数倍(2倍),所以就是 sizeof(eight_byte)=8

    xuxing

       xuxing

      176***6295@qq.com

    4个月前 (05-04)
  2.    Ethan

      186***29376@163.com

    1

    @xuxing,关于最后的 struct EIGHT_BYTE 的所占用内存大小的分析是有误的,unsigned int 类型需要用 4 个字节的内存空间来存储,unsigned char 类型需要 1 个字节的内存空间来存储,但是这里位域使用方面,cc1 和 cc2 都只使用了 1 位,即各占用 1 个 Bit,所以系统按照 cc1 的 unsigned int 类型开辟了 4 个字节来存放这个位域变量,所以最终 sizeof(eight_byte) 的结果应该是 4 才对。

    当然你可以尝试将 cc2 的位域占用改成 32,这里由于 4 个字节的空间已经不够存放两个位域变量了,所以就需要按照为 int 类型所占字节数的 2 倍来为其开辟空间,即这里便需要 8 个字节了。

    #include <stdio.h>struct EIGHT_BYTE{
        unsigned char ccc1 : 1;
        unsigned int ccc2 : 32;} eight_byte;int main(void){
        printf("sizeof eight_byte is : %lu
    ", sizeof(eight_byte));
        return 0;}

    得到的结果为:

    sizeof eight_byte is : 8

    倘若将 cc2 的位域空间改成 31,则这里存储空间大小仍是 4 个字节。

    #include <stdio.h>struct EIGHT_BYTE{    
        unsigned char ccc1 : 1;    
        unsigned int ccc2 : 31;} eight_byte;int main(void){    
        printf("sizeof eight_byte is : %lu
    ", sizeof(eight_byte));    
        return 0;}

    得到的结果为:

    sizeof eight_byte is : 4


 typedef

C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE:


typedef unsigned char BYTE;

在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写,例如:


BYTE  b1, b2;

按照惯例,定义时会大写字母,以便提醒用户类型名称是一个象征性的缩写,但您也可以使用小写字母,如下:


typedef unsigned char byte;

您也可以使用 typedef 来为用户自定义的数据类型取一个新的名字。例如,您可以对结构体使用 typedef 来定义一个新的数据类型名字,然后使用这个新的数据类型来直接定义结构变量,如下:


实例

#include <stdio.h>

#include <string.h>

 

typedef struct Books

{

   char  title[50];

   char  author[50];

   char  subject[100];

   int   book_id;

} Book;

 

int main( )

{

   Book book;

 

   strcpy( book.title, "C 教程");

   strcpy( book.author, "Runoob"); 

   strcpy( book.subject, "编程语言");

   book.book_id = 12345;

 

   printf( "书标题 : %s ", book.title);

   printf( "书作者 : %s ", book.author);

   printf( "书类目 : %s ", book.subject);

   printf( "书 ID : %d ", book.book_id);

 

   return 0;

}

当上面的代码被编译和执行时,它会产生下列结果:


书标题 : C 教程

书作者 : Runoob

书类目 : 编程语言

书 ID : 12345


高端!网站定制/设计/优化/二次开发/制作/搭建-塔城高端网站建设


上往建站提供微信小程序+公众号商城+企业网站建设一站式微信网站商城营销系统,微信小程序是一种依附于微信体内即点即用,无需下载安装即可使用的轻应用,它开启了移动端“触手可及”的梦想,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设微信公众号代运营商城小程序开发定制网店设计等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


400-111-6878
服务热线
顶部

备案号: 苏ICP备2021016738号-6

CopyRight © 2021 上往建站 All Right Reserved 未经许可不得复制转载

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.club  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

全国服务热线:400-111-6878