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

绿色为主色的网站高端大气的网站模板

绿色为主色的网站,高端大气的网站模板,在电脑上怎么建设网站,网站制作与建立参考#xff1a; 里科《C和指针》 结构的声明 struct {int a;char b; } x; struct {int a;char b; } y[20], *z;// 会报错#xff0c;因为z和x虽然都没有名字#xff0c;但是并不是一个东西 z x;struct SIMPLE {int a;char b; }; // 这样就对了#xff0c;因为名字匹…参考 里科《C和指针》 结构的声明 struct {int a;char b; } x; struct {int a;char b; } y[20], *z;// 会报错因为z和x虽然都没有名字但是并不是一个东西 z x;struct SIMPLE {int a;char b; }; // 这样就对了因为名字匹配 struct SIMPLE x; struct SIMPLE* z x;// 这样写也ok. 此时SIMPLE是类型名而非结构体标签因此可以直接用 typedef struct {int a;char b; } SIMPLE; SIMPLE x; SIMPLE* z x;结构体不能自引用不能包含同结构成员但可以包含指向同结构的指针。 struct SELF_REF1 {int a;struct SELF_REF1 b; }; // 这个会报错因为SELF_REF1的定义永远在递归永远没有完成struct SELF_REF2 {int a;struct SELF_REF2 *b; }; // 这个是正确的因为b的长度确定typedef struct {int a;SELF_REF3 *b; } SELF_REF3; // 这个会报错因为定义b时还没有SELF_REF3typedef struct SELF_REF3_TAG {int a;struct SELF_REF3_TAG *b; } SELF_REF3; // 这样是正确的如果两个结构需要互相依赖比如一个结构需要包含另一个结构的几个成员那么至少要有一个结构必须在另一个结构中以指针的形式存在。此时使用不完整声明incomplete declaration。 // 先不完整声明B struct B;struct A {struct B *partner;... };struct B {struct A *partner;... };结构的初始化 类似数组用嵌套的大括号。如果初始列表的值不够剩余的会采用缺省值。 struct INIT_EX {int a;short b[10];Simple c; } x {10,{1, 2, 3},{4, x} };结构成员的访问 结构成员的直接访问用 . 间接访问通过指向结构的指针访问成员使用 → 。 →的优先级高于和* typedef struct {int a;short b[2]; } Ex2; typedef struct EX {int a;char b[3];Ex2 c;struct Ex *d; } Ex; // 此时指针d是NULL Ex x { 10, Hi, { 5, {-1, 25} }, 0 }; Ex *px x;// -优先级高于所以不用括号 int *pi px-a; int val px-c.a; int val2 *px-c.b; // -1 // *px-d 会报错所以对指针进行解引用之前一定要检查是否有效结构存储空间的分配 编译器按照成员列表的顺序分配空间如果存储时需要满足边界对齐要求那么成员之间可能出现空白。比如一个机器int占4字节起始存储位置必须被4整除系统禁止编译器在struct的起始位置跳过字节来满足对齐要求那么对一个结构 struct ALIGN {char a;int b;char c; };其存储结构如下第一块的第一个字节存a随后空3个字节再开始存b然后进入第三块第一个字节存c随后空3个字节。这样可以满足对齐要求但需要12个字节空6个。 □■■■|□□□□|□■■■ 此时如果重新排列使得int b在第一行那么前4个字节可以存b然后再来4个字节存a和c最后跳过2个此时只需要8个字节空2个。 如果结构数目较少为了可读性可以将相关的放在一起但如果有成百上千个结构为了减少内存浪费应该考虑重排成员。 使用sizeof可以看整体占的字节数offsetof则能看到struct某个元素在第几个字节。 #include stddef.h typedef struct {int b;char a;char c; } ALIGN;int main() {printf(%d\n, sizeof(ALIGN)); // 8printf(%d\n, offsetof(ALIGN, c)); // 5 return 0; }作为函数参数 直接传struct效率很低因为需要制造拷贝复制到堆栈中再丢弃。因此一般是传递指针。除非结构特别特别小即长度和指针相同或更小 为了进一步提升效率可以把参数声明为寄存器变量如果函数对这个指针的间接访问超过3次会更省时同时为了避免修改指针可以声明为const // Transaction是一个结构体这个函数用来打印其中的成员。使用-访问成员 // 如果函数里需要修改某个成员就去掉const void print(register Transaction const *trans);位段bit field 类似struct但是成员占一个或多个位最终存储在一个或多个整型变量中。位段的成员只能是int、signed int或unsigned int最好只用signed和unsigned因为int被解释为有符号还是无符号是编译器决定的并且要指明位数。 如果要保证可移植性那么不要用位段。 优点是可以将长度为奇数的数据包装在一起节省存储空间可以很方便地访问一个整型值的部分内容比如在os中与磁盘控制器通信方便进行位操作。 struct CHAR {unsigned ch : 7;unsigned font : 6;unsigned size : 19; }; struct CHAR ch1;联合Union union的成员引用的是内存中的相同位置所以适合不同时刻在同一位置存储不同东西的情况。如果成员们长度不同union的长度就是最长的成员的长度。 初始化时初始值必须是第一个成员的类型如果不符合会被转换。 union {float f;int i; } fi { 1.0f };
http://www.pierceye.com/news/830781/

相关文章:

  • 郑州搭建网站公司互联网公司网站建设的目的
  • 响应式视频网站什么是权重高的网站
  • 做教育网站挣钱我的网站域名是什么
  • django 网站开发实例哪里可以检测胎儿性别
  • 刷排名凡搜网站宝微信5000人接推广费用
  • 网站优化外包服务专业网站建设服务商
  • 江西企业网站建设费用wordpress正在执行例行维护_请一分钟后回来.
  • 苏宁推客如何做网站创建一个网站的步骤
  • 优化网站广告优化东莞美食网站建设报价
  • 单页网站的营销定制应用软件有哪些
  • 如何建立一个网站详细步骤品牌建设可以从哪方面入手
  • 杨浦做网站福州网站公司
  • 厦门网站建设工程汽车网站正在建设中模板
  • 关于网站规划建设方案书怎么制作官网
  • 网站域名注销流程昌邑微信网站建设公司
  • 如何做众筹网站wordpress手机投放广告
  • 贵阳制作网站的公司如何找友情链接
  • 苏州诶茵诶公司网站flash网站怎么制作
  • 域名申请网页制作网站建设珠海免费模板建站
  • 行情网免费网站大全wordpress 头像上传路径
  • 网站开发联系方式做网站如何提需求
  • 小程序定制团队seo顾问推推蛙
  • 徐州网站建设公司哪家好经典广告
  • 百度的官方网站wordpress提示插件安装
  • 网站的按钮怎么做 视频宁波网站建设用什么软件
  • 宜宾市做网站多少钱老板办公室装修效果图
  • 如何将网站挂载域名手机网站布局教程
  • 哪个网站可以做销售记录公司经营范围分类目录
  • dw网站的站点建设怎么百度做网站
  • 在家做网站设计国土局网站建设经验