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

做百度移动端网站软件如何修改响应式网站模板

做百度移动端网站软件,如何修改响应式网站模板,做软件的公司网站有哪些,如何建立一个网站要多少钱本篇概要 本篇主要讲述C语言结构体的相关知识#xff0c;包括结构体的基本声明#xff0c;结构体的匿名结构#xff0c;结构体的自引用#xff0c;结构体变量的定义和初始化以及结构体的内存对齐等相关知识。 文章目录 本篇概要1.结构体1.1结构体的基本声明1.2结构体的特殊…本篇概要 本篇主要讲述C语言结构体的相关知识包括结构体的基本声明结构体的匿名结构结构体的自引用结构体变量的定义和初始化以及结构体的内存对齐等相关知识。 文章目录 本篇概要1.结构体1.1结构体的基本声明1.2结构体的特殊声明(匿名结构体类型)1.3结构体的自引用1.4结构体变量的定义和初始化1.5结构体内存对齐1.6结构体传参 1.结构体 1.1结构体的基本声明 结构是一些值的集合这些值称为成员变量。结构的每个成员可以是不同类型的变量。 结构体的基本用法如下 struct Stu { char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号 }; //分号不能丢当然我在这里还有一些补充 struct student { }s1,s2,s3;//这s1s2s3是三个结构体变量int main() { struct student s4,s5,s6;//s4s5s6是三个结构体变量 return 0; }需要说明的是s1,s2,s3是全局变量s4,s5,s6是局部变量。 1.2结构体的特殊声明(匿名结构体类型) struct {char neme[20];int age;char sex[5];//一个汉字2个字符float score; }s1,s2;↑如上代码所示可以去掉结构体的名字 匿名结构体类型但只能用一次后面再想定义变量不可以(只可以使用s1和s2) struct {char neme[20];int age;char sex[5];//一个汉字2个字符float score; }b;struct {char neme[20];int age;char sex[5];//一个汉字2个字符float score; }*p;int main() { pb; return 0; }↑这里两个结构体类型完全一样但是pb这样是有问题的虽然结构体类型成员完全一样但在编译器看来这依然是两种结构体类型编译器认为p和b是不一样的。 1.3结构体的自引用 即在结构中包含一个类型为该结构本身的成员 自引用错误用法 struct Node { int data; struct Node n; };int main() { printf(%d,sizeof(struct Node)); return 0; }提示这么使用编译器会报警运行不成功。因为struct中有一个整形为4字节后面有一个结构体那么是4n那么n中又是4n算不了。 自引用的正确用法 struct Node { int data; struct Node* n; }; int main() { printf(%d,sizeof(struct Node)); return 0; }此时代码可以运行用指针的话指针存放下一个节点的地址指针本身的大小也是固定的所以可以计算出来。 1.4结构体变量的定义和初始化 下面列举几种结构体的定义 struct Point {int x;int y; }p1 {1,2};struct Point p3 {4,5};int main() {int a 10;int b 20;struct Point p2 {a, b};return 0; }结构体可以这么定义 struct Stu {char name[15];//名字int age; }; struct Stu s { zhangsan, 20 }; struct Stu s2 { .age18, .name如花};int main() { printf(%s %d\n, s.name, s.age); printf(%s %d\n, s2.name, s2.age); }也可以这么定义 struct Node {int data;struct Point p;struct Node* next; }; int main() { struct Node n { 100, {20, 21}, NULL }; printf(%d x%d y%d\n, n.data, n.p.x, n.p.y); }更加复杂也还可以这么定义嵌套结构体。 1.5结构体内存对齐 我们先来看以下的代码 struct S1 {char c1;int i;char c2; };struct S2 {char c1;char c2;int i; };int main() {printf(%d\n, sizeof(struct S1));printf(%d\n, sizeof(struct S2));return 0; }提示我们可以看到两个一摸一样的结构体计算出来的大小却不一样这是什么导致的呢 就是结构体的内存对齐导致的。 下来给大家介绍一个宏 offsetof其头文件为stddef.h 它可以计算结构体成员相较于起始位置的偏移量 我们在上面代码的main函数加上以下代码 int main() {printf(%d\n, offsetof(struct S1, c1));printf(%d\n, offsetof(struct S1, c2));printf(%d\n, offsetof(struct S1, i));//printf(%d\n, sizeof(struct S1));//printf(%d\n, sizeof(struct S2));return 0; }我们可以看到offsetof计算出来的结果为048上面的示意图对应的就是struct内存的结构灰色为char c1蓝色为int i橙色为char c2红色的取余浪费了。 使用同样的操作我们可以得出struct的结构示意图。 c1c2i都已在图中标注出来红色为浪费部分。 提示但是为什么要这个样子呢为什么要内存对齐 首先得掌握结构体的对齐规则 第一个成员在与结构体变量偏移量为0的地址处存储。其他成员变量要对齐到某个数字对齐数的整数倍的地址处。 对齐数 编译器默认的一个对齐数 与 该成员大小的较小值。 VS中默认的值为8结构体总大小为最大对齐数每个成员变量都有一个对齐数的整数倍。如果嵌套了结构体的情况嵌套的结构体对齐到自己的成员中最大对齐数的整数倍处结构体的整 体大小就是所有最大对齐数含嵌套结构体的对齐数的整数倍 例如struct s2 char c1偏移量为0 直接占第一个字节 char c2 偏移量为min{1,8} int i 偏移量为min{4,8} 此结构体最大对齐数位4根据规则三结构体总大小取4的整数倍即8. 再例如struct s1 char c1偏移量位0直接占第一个字节 int i偏移量位min{4,8},从第四个字节开始占4个字节 char c2偏移量为1的倍数直接放在i后面 这是一共占了9个字节最大对齐数为4结构体大小应为4的倍数故为12. 接下来就来说一说为什么要对齐 平台原因(移植原因) 不是所有的硬件平台都能访问任意地址上的任意数据的某些硬件平台只能在某些地址处取某些特 定类型的数据否则抛出硬件异常。性能原因 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于为了访问未对齐的内存处理器需要作两次内存访问而对齐的内存访问仅需要一次访问。 结构体的内存对齐是拿空间来换取时间的做法。 对于第二点如下 提示在设计结构体的时候我们既要满足对齐又要节省空间如何做到 让占用空间小的成员尽量集中在一起。 例如struct s2就比struct s1所占空间小 上面讲到VS的默认对齐数为8我们也可以更改它 pragma pack(5) //设置默认对齐数为5 pragma pack() //取消设置的默认对齐数还原为默认 1.6结构体传参 代码使用了结构体传值调用和传址调用两种方法 struct S {int data[1000];int num; };void print1(struct S t) {printf(%d %d %d %d\n, t.data[0], t.data[1], t.data[2], t.num); }void print2(const struct S * ps) {printf(%d %d %d %d\n, ps-data[0], ps-data[1], ps-data[2], ps-num); }int main() {struct S s { {1,2,3}, 100 };print1(s);//传值调用print2(s);//传址调用return 0; }函数传参的时候参数是需要压栈会有时间和空间上的系统开销。 如果传递一个结构体对象的时候结构体过大参数压栈的的系统开销比较大所以会导致性能的 下降。所以我们优先使用传址调用。
http://www.pierceye.com/news/664575/

相关文章:

  • 新手如何注册网站域名做 理财网站有哪些
  • 南宁快速建站模板企业网站的开发与应用
  • 网站运营适合什么样的人做企业宣传及介绍ppt
  • 怎么样网站开源小升初在线做试卷的网站
  • 中国建设银行章丘支行网站网站排版设计欣赏
  • 儿童摄影网站建设专业做网站制作自助建站系统
  • 注册做网站的公司有哪些wordpress 4.1 下载
  • 用ps做美食网站一个网站多少钱?
  • 网站建设 试题揭阳专业做网站公司
  • 手机上怎么创建自己的网站河南企业网站优化
  • 定陶区城乡和住房建设局网站新手怎么做网站
  • 工商银行与建设银行网站对比石嘴山网站seo
  • seo快速建站自学程序员的步骤
  • 做旅行网站的依据及意义如何制作自己想要的图片
  • 电子商务网站怎么做网站建设企业建站哪家好?来这里看看
  • 网站备案电话号码购物商城网站建设方案
  • 手机商城系统徐州seo计费管理
  • 西安网站公司哪家好信息推广的方式有哪些
  • 网站开发注意的事项商丘网站制作软件
  • 51zwd一起做网站广州广东省网站备案查询
  • 如何生成一个网站自己弄公司网站
  • 企业信用信息查询网官网孝感网站seo
  • 中淼建设工程有限公司网站分类用wordpress
  • 腾讯建设网站首页做销售网站
  • 推广引流网站聚名网注册
  • 原来做网站后来跑国外了多伦多网站建设多少钱
  • 手机建站平台做母婴网站设计思路
  • 免费个人手机网站九八智能建站
  • 中山网站备案如何做购物网站
  • 常见的简单的网站制作建设网站的好公司