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

咸宁 网站建设黄冈论坛大小事

咸宁 网站建设,黄冈论坛大小事,wordpress文章发布时间,wordpress支付接口指针的步长及意义 文章目录指针的步长及意义指针变量1后偏移的字节数不同指针解引用时取出的字节数不同其他例子不同类型的指针有何不同的意义指针变量1后跳跃字节数量不同解引用的时候,取出字节数量不同 指针变量1后偏移的字节数不同 代码演示:&#…

指针的步长及意义

文章目录

  • 指针的步长及意义
  • 指针变量+1后偏移的字节数不同
  • 指针解引用时取出的字节数不同
  • 其他例子

不同类型的指针有何不同的意义

  • 指针变量+1后跳跃字节数量不同
  • 解引用的时候,取出字节数量不同

指针变量+1后偏移的字节数不同

代码演示:(不同编译器下偏移值可能不同)

void test01()
{char * p1 = NULL;printf("%d\n", p1);printf("%d\n", p1 + 1);//+1偏移1个字节int * p2 = NULL;printf("%d\n", p2);printf("%d\n", p2 + 1);//+1偏移4个字节double * p3 = NULL;printf("%d\n", p3);printf("%d\n", p3 + 1);//+1偏移8个字节
}

运行结果:

在这里插入图片描述

总结:vs下常见指针的偏移值分别为:
char *:1个字节
int *:4个字节
double *:8个字节
数组指针:偏移整个数组大小
结构体指针:偏移整个结构体大小

指针解引用时取出的字节数不同

代码演示:

void test02()
{char buf[1024] = { 0 }; //1024字节int a = 1000; //4字节memcpy(buf, &a, sizeof(int));//内存拷贝函数char * p = buf;printf("%d\n", *(int*)p );//指针类型强制转换在对其解引用
}

运行结果:

在这里插入图片描述

总结:不同类型指针解引用时取出数据的字节数不同
VS下常见指针类型解引用时取出的字节数分别为:
char *:1个字节(通常需要强转)
指针解引用时取出数据的字节数不同
VS下常见指针类型解引用时取出的字节数分别为:
char *:1个字节(通常需要强转)
int * :4个字节

其他例子

// todo 字节序转换
#include <stdio.h>
#include <arpa/inet.h>
void printf_bin(int num) // 这个函数将整形变量以二进制的形式打印出来
{int i, j, k;unsigned char *p = (unsigned char *)&num + 3; // p先指向num后面第3个字节的地址,即num的最高位字节地址for (i = 0; i < 4; i++) // 依次处理4个字节(32位){j = *(p - i);                // 取每个字节的首地址,从高位字节到低位字节,即p p-1 p-2 p-3地址处for (int k = 7; k >= 0; k--) // 处理每个字节的8个位,注意字节内部的二进制数是按照人的习惯存储!{if (j & (1 << k)) // 1左移k位,与单前的字节内容j进行或运算,如k=7时,00000000&10000000=0 ->该字节的最高位为0printf("1");elseprintf("0");}printf(" "); // 每8位加个空格,方便查看}printf("\r\n");
}int main()
{char buf[4] = {192, 168, 1, 2}; // 32位// todo1 将 4字节(32位)的数据存放在 num容器(int 类型, 32位)中unsigned int num = *(unsigned int *)buf; // int*把buf(char类型的数组首地址强转为int*类型的地址),// 再*(解引用)取出四个字节的数据,而int 类型刚好是4字节,就能存放这四字节数据// 你可以把 int num 当成是定义了一个能存放32位数据的容器,只是这32位存放的是// 192.168.1.2 的用二进制(01)表示的情况printf_bin(num);printf("%u\n", num); //%u用于打印 unsigned int .// 打印结果 33663168 . 这么大是因为 他不会每八位隔断,每八位分别做二进制转换//(像把 00000010 00000001 10101000 11000000)隔断为 192.168.1.2 而是// 直接将这个32位的数作为整体进行二进制转换printf("================");int n1 = 33663168; // 实际上这个十进制数用二进制的表示就是 00000010 00000001 10101000 11000000printf_bin(n1);// htol() 函数的作用是将一个32位数从主机字节顺序转换成网络字节顺序。unsigned int sum = htonl(num);printf_bin(sum); // 11000000 10101000 00000001 00000010  和 num中的二进制位是相反的
}
http://www.yayakq.cn/news/380211/

相关文章:

  • 购物网站建设精英高端网站建设注意
  • 怎样做 云知梦 网站 付费网站这是我看过尺度最大的哔哩哔哩
  • 做响应式网站对设计图的要求开发一个oa系统多少钱
  • 免费网页设计成品网站光效网站
  • 谷歌搜索引擎官网沈阳seo团队
  • 外贸企业网站建设公司网站域名查询工具
  • 郑州房地产网站昆明做网站建设企业推荐
  • 体检网站源码如何建自己的网站
  • dnf免做卡网站网络推广的优化方法
  • 普陀学校网站建设济南php网站开发
  • 张家界旅游网站找工作平台网站
  • 苏州专业高端网站建设公司服务器安装完面板怎么做网站
  • 代码下载网站手机首页设计
  • 英文网站营销html表白简单代码
  • 个人备案的网站能做什么泰州做网站的公司
  • 网站建设及维护费算业务宣传费大连做网站外包
  • h5网站开发实例教程wordpress 修改主题页面
  • 建html5响应式网站的工具百度sem认证
  • 怎么做新网站手机网站开发怎么样
  • 教育网站制作设计山东企业网站建设推荐
  • 自己做捕鱼网站能不能挣钱怎么学做电子商务网站
  • 各大网站响应生态建设app程序开发公司
  • 网站开发众包平台做英语听力音频的网站
  • 中国空间站航天员首次出舱wordpress幻灯片太卡
  • 江门外贸网站建设做网站最常用的软件是什么
  • 官方网站建设费用应入什么科目免费创建虚拟网站
  • 弄一个关于作文的网站怎么做做系统软件的网站
  • 网站制作可能出现的问题怎么注册商标
  • 网站管理员容易做吗网站域名怎么起
  • 沈阳网站制作联系方式做最精彩绳艺网站