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

做网站的人怎么联系电子商务网站建设流程

做网站的人怎么联系,电子商务网站建设流程,wordpress页面调用文章列表,前端电商网站设计论文目录 1.宏含义及使用2.宏原理分析1.原理2.宏理解 1.宏含义及使用 依赖库stdarg.hva_list 其实就是char*类型,方便后续按照字节进行指针移动 va_start(arg, num) 使arg指向可变参数部分(num后面) va_arg(arg, int) 先让arg指向下个元素,然后使用相对位置…

目录

  • 1.宏含义及使用
  • 2.宏原理分析
    • 1.原理
    • 2.宏理解


1.宏含义及使用

  • 依赖库stdarg.h
  • va_list
    • 其实就是char*类型,方便后续按照字节进行指针移动
  • va_start(arg, num)
    • 使arg指向可变参数部分(num后面)
  • va_arg(arg, int)
    • 先让arg指向下个元素,然后使用相对位置 – 偏移量,访问当前元素
      • :访问了当前数据的同时,又让arg指向了后续元素
  • va_end
    • 将arg指针设置为NULL,防止野指针
  • 使用示例
    int FindMax(int num, ...)
    {va_list arg;va_start(arg, num);int max = va_arg(arg, int); // 根据类型,获取可变参数列表中的第一个数据//获取并比较其他的for (int i = 0; i < num - 1; i++){int cur = va_arg(arg, int);if (max < curr){max = curr;}}va_end(arg);return max;
    }int main()
    {int max = FindMax(5,11,22,33,44,55);printf("max = %d\n", max);return 0;
    }
    
  • 注意事项
    • 可变参数必须从头到尾逐个访问
      • 如果在访问了几个可变参数之后想半途终止,这是可以的
      • 但是,如果想一开始就访问参数列表中间的参数,那是不行的
    • 参数列表中至少有一个命名参数
      • 如果连一个命名参数都没有,就无法使用va_start
    • 这些宏是无法直接判断实际存在参数的数量
    • 这些宏无法判断每个参数的类型
    • 如果在va_arg中指定了错误的类型,那么其后果是不可预测的
      • 整型提升除外

2.宏原理分析

1.原理

  • 可变参数列表对应的函数,最终调用也是函数调用,也要形成栈帧
  • 栈帧形成前,临时变量是要先入栈的,根据之前所学,参数之间位置关系是固定的
  • 通过之前的汇编的学习,发现了短整型在可变参数部分,会默认进行整形提升(char short float整型提升成int/double),那么函数内部在提取该数据的时候,就要考虑提升之后的值,如果不加考虑,获取数据可能会报错或者结果不正确

2.宏理解

  • 都有什么?
    // va_list其实就是char*类型,方便后续按照字节进行指针移动
    typedef char * va_list;#define va_start _crt_va_start
    #define va_arg _crt_va_arg
    #define va_end _crt_va_end
    
  • #define va_start _crt_va_start依赖实现
    // 这个宏特别好理解,结合栈帧中临时参数的压入位置
    #define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v) )
    
  • #define va_arg _crt_va_arg依赖实现
    // 这个设计特别巧妙,先让ap指向下个元素,然后使用相对位置-偏移量,访问当前元素
    // 访问了当前数据的同时,还让ap指向了后续元素,一举两得
    #define _crt_va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
    
  • #define va_end _crt_va_end依赖实现
    // 这个宏特别好理解,将ap指针设置为NULL
    #define _crt_va_end(ap) ( ap = (va_list)0 )
    
  • _ADDRESSOF(v)理解
    // 取参数的地址,也很好理解
    #define _ADDRESSOF(v) ( &(v) )
    
  • _INTSIZEOF(n)理解,难点
    #define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
    
    • 前提
      • 为了后面方便表述,假设sizeof(n)的值 --> n(char 1,short 2, int 4)
      • 在32位平台下测试,sizeof(int) == 4,其他情况暂时不考虑
    • _INTSIZEOF(n)的意思:计算一个最小数字x,满足x>=n && x%4==0,其实就是一种4字节对齐的方式
      • 是什么?
        • 比如n是:1,2,3,4 对n进行向sizeof(int)的最小整数倍取整的问题 就是 4
        • 比如n是:5,6,7,8 对n进行向sizeof(int)的最小整数倍取整的问题 就是 8
      • 为什么要有这个4字节对齐
        • 结合之前栈帧的学习和上面代码的测试结果
      • 怎么办到的
        • 第一步理解:4的倍数
          • 既然是4的最小整数倍取整,那么本质是:x=4*mm是具体几倍,对7来讲,m就是2,对齐的结果就是8,m具体是多少,取决于n是多少
            • 如果n能整除4,那么m就是n/4
            • 如果n不能整除4,那么m就是n/4+1
          • 上面是两种情况,如何合并成为一种写法呢?
            • 常见做法是 (n+sizeof(int)-1))/sizeof(int) -> (n+4-1)/4
            • 如果n能整除4
              • 那么m就是(n+4-1)/4 -> (n+3)/4,+3的值无意义,会因取整自动消除,等价于n/4
            • 如果n不能整除4
              • 那么n=最大能整除4部分+r,1 <= r < 4
              • 那么m就是(n+4-1)/4 --> (能整除4部分+r+3)/4,其中4 <= r+3 < 7 --> 能整除4部分/4 + (r+3)/4 -> n/4+1
        • 第二步理解:最小4字节对齐数
          • 搞清楚了满足条件最小是几倍问题,那么,计算一个最小数字x,满足 x>=n && x%4==0,就变成了((n+sizeof(int)-1)/sizeof(int))[最小几倍] * sizeof(int)[单位大小] -> ((n+4-1)/4)*4
          • 这样就能求出来4字节对齐的数据了,其实上面的写法,在功能上,已经和源代码中的宏等价了
        • 第三步理解:理解源代码中的宏
          • 拿出简洁写法:((n+4-1)/4)* 4,设w=n+4-1,那么表达式可以变化成为 (w/4)*4,而4就是 2 2 2^2 22w/4不就相当于右移两位吗?再次*4不就相当左移两位吗?先右移两位,在左移两位,最终结果就是,最后2个比特位被清空为0!
          • 需要这么费劲吗?
            • w & ~3不香吗?
          • 所以,简洁版(n+4-1) & ~(4-1)
          • 原码版( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) ),无需先/,再*
  • 图解
    请添加图片描述
http://www.shuangfujiaoyu.com/news/35467.html

相关文章:

  • app界面怎么做武汉seo网站管理
  • 网站制作主题seo综合查询爱站
  • 网站制作公司网站建设百度网页浏览器
  • 想做个网站不知道怎么做北京seo优化哪家好
  • 光明新区城市建设局网站长沙网站设计
  • 品牌大全网站源码友情链接大全
  • 百度公司做网站优化多少钱网站友链交换平台
  • 怎么做网站地图优化课程体系
  • 南通做网站公司做教育培训应该注册什么公司
  • 婚礼礼网站如何做的app开发费用一览表
  • 福田做商城网站建设哪家服务周到h5下一页
  • 深圳做网站建设的哪家效果好又便宜如何能查到百度搜索排名
  • 洛阳免费提供建站方案福清seo
  • 注册号域名后 怎么建设网站公司软文推广
  • 化工材料 技术支持 东莞网站建设湖南网站建设推广
  • 网站开发后乙方把源代码交给甲方公关公司
  • 催眠美女做仆人网站佛山seo整站优化
  • 怎么把凡科网里做的网站保存成文件seo网络优化是什么工作
  • 免费域名申请网站空间域名注册平台
  • wix怎么做网站教程百度首页推广广告怎么做
  • 微信商城网站建设网站大全
  • 做微信投票的网站5成人电脑速成培训班
  • 乐云seo快速网站建设wordpress
  • 商城网站建设-如何查询关键词的搜索量
  • 有没有专门做航拍婚礼网站广东seo
  • struts2 做的网站网上怎么推广产品
  • 技术社区网站开发例子google网址直接打开
  • 郑州网站建设的公司哪家好百度seo关键词优化排行
  • 住建局官网查询入口揭阳新站seo方案
  • 做网站提升公司形象站长工具 忘忧草