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

雄安智能网站建设电话永久免费无代码开发平台网站

雄安智能网站建设电话,永久免费无代码开发平台网站,上海做网站公司推荐,龙海市城乡建设局网站目录 1.结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段(位段的填充&可移植性) 位段的内存分配 1.结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对…

目录

1.结构体

结构体类型的声明

结构的自引用

结构体变量的定义和初始化

结构体内存对齐

结构体传参

结构体实现位段(位段的填充&可移植性)

 位段的内存分配


 

1.结构体

  • 结构体类型的声明
  • 结构的自引用
  • 结构体变量的定义和初始化
  • 结构体内存对齐
  • 结构体传参
  • 结构体实现位段(位段的填充&可移植性)

1.结构体

  • 结构体类型的声明

结构体声明公式 

举例说明

特殊类型

匿名结构体类型

​​​匿名结构体类型只能在结构体哪里创建变量(全局变量)

 这样也是不对的,这么写编译器认为是错的,因为编译器认为这两个类型是不一样

所以尽量不要写匿名结构体

struct
{char name[20];char sex[10];int age;char id[15];
}s1;
struct
{char name[20];char sex[10];int age;char id[15];
}* ps;
int main()
{ps = &s1;//err,这么写编译器认为是错的,编译器认为这两个地址类型是不一样return;
}
  • 结构的自引用

那我们访问的时候要如何找到下一个结点呢? 

此时的结点既需要储存自己的数据,又需要和下一个结点建立联系

  • 这时可以这样做

🙈🙈错误案例

这样写是错的,你无法求出sizeof(struct Node)的大小,会无限循环

🥫🥫 正确示范

🐯🐯这样就串起来了 

 

  • 结构体变量的定义和初始化

初始化1 

 初始化2

  初始化3

  • 结构体内存对齐

下边这几个数是多少呢? 

struct S1
{int a;char c;
};
struct S2
{char c1;int a;char c2;
};
struct S3
{char c1;int a;char c2;char c3;
};
int main()
{printf("%d %d %d", sizeof(struct S1), sizeof(struct S2), sizeof(struct S3));return;
}

 为什么是8,12,12呢?

  • struct S1

  • struct S2 

 

  • struct S3 

 **************************🥫🥫🥫🥫🥫🥫🥫🥫🥫🥫🥫🥫🥫🥫********************************

1.结构体的第一个成员永远都放在0偏移处
2.从第二个成员开始,以后的每一个成员都要对齐到某个对齐数的整数倍数
 (这个对齐数是成员自身大小和默认对齐数的较小值)
ps:
 (vs环境下默认对齐数是8
 gc环境下没有对齐数,没有对齐数时,对齐数就是成员自身的大小)
3.当成员全部存放进去后
结构体的总大小必须是,所有成员的对齐数中最大对齐数的整数倍如果不够,就浪费空间对齐

  • 结构体传参

struct S
{int data[1000];int num;
};
struct S s = { {1,2,3,4}, 1000 };
//结构体传参
void print1(struct S s)
{printf("%d\n", s.num);
}
//结构体地址传参
void print2(struct S* ps)
{printf("%d\n", ps->num);
}
int main()
{print1(s); //传结构体print2(&s); //传地址return 0;
}

ps:  首选print2函数 

  • 结构体实现位段(位段的填充&可移植性)

位段的声明和结构是类似的,有两个不同:
    1.位段的成员必须是 int、unsigned int 或signed int 。
    2.位段的成员名后边有一个冒号和一个数字

 

例子 

 

A就是一个位段类型,那位段A的大小是多少?
        是 8
原因:上面共2+5+10+30=47个比特位,一个字节八个比特位,按理来说应该是6*8 = 48个比特位
但现在是8*8 = 64,别太贪,已经很棒了

 

 位段的内存分配

1. 位段的成员可以是 int unsigned int signed int 或者是 char (属于整形家族)类型
2. 位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式来开辟的。
3. 位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段。
举例说明

 

 

 

http://www.dinnco.com/news/17926.html

相关文章:

  • wordpress+typecho优化网络培训
  • 域名注册哪个网站好微信朋友圈推广软文
  • 创建一个网站的项目体现项目完成速度因素的百度知道官网
  • 网页与网站的区别与联系是什么qq营销软件
  • 浙江专业网页设计免费建站品牌推广包括哪些内容
  • 网站信息化建设领导小组万网阿里云域名查询
  • 做网站要审批吗站长之家素材网
  • 做社群的网站有哪些aso优化分析
  • 哪里做网站比较号电子商务网站建设流程
  • 美国做任务挣钱的网站合肥网站推广优化
  • 前端网站开发流程图搜索引擎在线观看
  • 开一个网站_只做同城交易seo和竞价排名的区别
  • wampserver做动态网站sem竞价广告
  • h5免费制作平台火蚁邀请函怎么写seo从零开始到精通200讲解
  • 企业网站开发综合实训怎么在百度做网站推广
  • 梅州网站建设baidu百度查询入口
  • wordpress限制站点使用时间推广策略及推广方式
  • 程序源代码下载网站网站关键词公司
  • c 网站开发 环境配置广告设计
  • 魔兽做图下载网站站长之家域名查询鹿少女
  • 做网站banner图必备的网络公司排名
  • 精品课程网站源码网络营销五种方法
  • 阿里云可以建设多个网站灰色词快速排名接单
  • 做网站的难点是什么百度推广费用预算表
  • 上海网站制作开发公司专门做排行榜的软件
  • 保定网站制作价格在百度上做广告推广要多少钱
  • 必须网站的访问量如何推广品牌
  • 策划案怎么写百度seo不正当竞争秒收
  • 建旅游网站费用明细企业邮箱怎么注册
  • 手机网站导航特效优化大师人工服务电话