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

指针的步长及意义(C语言基础)

指针的步长及意义

文章目录

  • 指针的步长及意义
  • 指针变量+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中的二进制位是相反的
}

相关文章:

指针的步长及意义(C语言基础)

指针的步长及意义 文章目录指针的步长及意义指针变量1后偏移的字节数不同指针解引用时取出的字节数不同其他例子不同类型的指针有何不同的意义指针变量1后跳跃字节数量不同解引用的时候&#xff0c;取出字节数量不同 指针变量1后偏移的字节数不同 代码演示&#xff1a;&#…...

SpringMVC:统一异常处理(11)

统一异常处理1. 说明2. 问题描述3. 异常处理器使用3.1 创建异常处理器类3.2 让程序抛出异常3.3 测试4. 项目异常处理方案4.1 异常分类4.2 异常解决方案4.3 异常解决方案的具体实现4.4 测试5. 总结1. 说明 \quad本篇文章是在文章SpringMVC&#xff1a;SSM整合&#xff08;Spring…...

SpringBoot的配置与使用

SpringBoot简介 我们的Spring是包含了众多工具的IoC容器&#xff0c;而SpringBoot则是Spring的加强版&#xff0c;可以更加方便快捷的使用 如果Spring是手动挡的车&#xff0c;那么SpringBoot就是自动挡的车&#xff0c;让我们的驾驶体验变得更好 SpringBoot具有一下几种特征…...

【Python】tkinter messagebox练习笔记

我一好友在朋友圈看到人家用代码花式秀恩爱&#xff0c;让我也做一个&#xff0c;我就用我学习半年python的功力&#xff0c;做了这一个东西。&#x1f64f;窗口主页面&#xff08;图一&#xff09;为了让我这个盆友有颜面&#xff0c;特意做了一个问答问他帅不帅&#xff0c;以…...

2022年12月电子学会Python等级考试试卷(五级)答案解析

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;五级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共25题&#xff0c;共50分) 1. 下面哪个语句正确定义了元组类型数据tuple1&#xff1f;&#xff08; &#xff09; A. t…...

计算机网络自定向下 -- 浅谈可靠性之rdt协议

可靠性数据传输原理 可靠指数据在传输过程中不错&#xff0c;不丢&#xff0c;不乱 运输层要为应用层提供一种服务&#xff1a;数据可以通过一条可靠的信道进行传输&#xff0c;在该信道中传输的数据不会受到损坏或者丢失, 实现这种服务的是可靠数据传输协议。 要实现这种服…...

制造业升级转型:制造业上市公司-智能制造词频统计数据集

发展智能制造&#xff0c;关乎中国制造业转型升级的成效。基于中国制造业上市公司年报&#xff0c;通过文本数据挖掘&#xff0c;提取关键词反映企业对智能制造的关切焦点&#xff0c;进而运用词频及共词网络分析&#xff0c;洞察中国智能制造的发展态势。 研究发现&#xff0…...

HTML 开发工具整理

一、千乐微云团队推荐的HTML开发工具Visual Studio Code 简称VS Code &#xff08;第一推荐&#xff09;Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器&#xff0c;支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义快捷键、括号…...

介绍ACE C++网络通信框架

​ 很久以前笔者也不太熟悉ACE C网络通信框架&#xff0c;偶然的机会逐渐接触后&#xff0c;发现它的优良&#xff01; 总结来看它的有点如下 非常适合后台无界面网络通信的系统编程 适合小型化核心网使用&#xff1b;但值得注意&#xff0c;如果您需要的是web领域技术栈&…...

【Mac OS】JDK 多版本切换配置

前言 由于不同的项目可能需要使用的 JDK 版本不一样&#xff0c;所以在系统中配置多个 JDK 版本&#xff0c;并且能随时切换&#xff0c;是一个必要的配置。 查看已安装的 JDK 版本 /usr/libexec/java_home -V框框1是执行的命令 框框2是当前系统下所有的 JDK 版本 框框3是当…...

RabbitMQ-Exchanges交换机

一、介绍 RabbitMQ消息传递模型的核心思想是&#xff1a;生产者生产的消息从不会直接发送到队列。实际上&#xff0c;通常生产者甚至不知道这些消息传递到了哪些队列中。相反&#xff0c;生产者只能将消息发送到交换机&#xff0c;交换机工作的内容非常简单&#xff0c;一方…...

离散数学 课时二 命题逻辑等值演算

等值式(等值联结词) 1、设A、B是两个命题公式,若A、B构成的等价式 A等价于B 为重言式,那么称A与B是等值的 2、常用等值式&#xff1a; 注意&#xff1a; 1 双否定律 2 幂等律 3 交换律 4 结合律 5 吸收律 6 德摩根律 7 同一律 8 零律 9 矛盾律 10 排中律 11 蕴含表达式 12 …...

Debezium系列之:事件扁平化转换SMT,简化debezium数据格式,为数据添加head,为值添加键值对

Debezium系列之:事件扁平化转换SMT,简化debezium数据格式,为数据添加head,为值添加键值对 一、需求背景二、Debezium数据格式和扁平化数据格式对比三、事件扁平化SMT作用四、事件扁平化转换SMT设置五、事件扁平化参数详解六、完整SMT参数配置一、需求背景 Debezium 数据更改…...

内网渗透(十八)之Windows协议认证和密码抓取-本地认证(NTML哈希和LM哈希)

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…...

Portraiture全新4.0最新版人像磨皮插件更新内容

Portraiture是一款智能磨皮插件&#xff0c;为Photoshop和Lightroom添加一键磨皮美化功能&#xff0c;快速对照片中皮肤、头发、眉毛等部位进行美化&#xff0c;无需手动调整&#xff0c;大大提高P图效率。全新4版本&#xff0c;升级AI算法&#xff0c;并独家支持多人及全身模式…...

前端也能悄悄对视频截图?js实现对视频按帧缓存

前言 虽然最后没有采用这种方案来实现滚动控制视频进度&#xff0c;但是仍然想自己试试这种方案的实现&#xff0c;毕竟应用范围也挺广的。 核心代码并不多&#xff0c;算是一篇小短文&#xff5e;。 掘金好像不允许放站外演示链接&#xff0c;所以这里就用动图大概展示下最终…...

TCP、UDP网络编程面试题

TCP、UDP、Socket、HTTP网络编程面试题 什么是网络编程 网络编程的本质是多台计算机之间的数据交换。数据传递本身没有多大的难度&#xff0c;不就是把一个设备中的数据发送给其他设备&#xff0c;然后接受另外一个设备反馈的数据。现在的网络编程基本上都是基于请求/响应方式…...

用网络调试助手测试PLC-Reocrder收听模式的过程

目录 一、测试环境 二、步骤及要点说明 1、PLC-Recorder的通道配置 2、PLC-Recorder启动采集 3、配置网络调试助手 4、启动调试助手的连接&#xff0c;并点击“启动批量发送” 5、停止发送&#xff0c;查看发送和接收的情况 三、小结 一、测试环境 Windows10操作系统&a…...

牛客小白月赛66

牛客小白月赛66_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)冒着期末挂科的风险打了打&#xff0c;缓解了一下网瘾&#xff0c;感觉还行最近为了期末鸽了很多期的div3&#xff0c;一学期末就手痒想训&#xff0c;感觉再不打人要没了&#xff0c;结果…...

加载sklearn新闻数据集出错 fetch_20newsgroups() HTTPError: HTTP Error 403: Forbidden解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…...

MCP密钥安全管理的无侵入解决方案:mcp-safe-run工具详解

1. 项目概述&#xff1a;告别硬编码&#xff0c;拥抱安全的MCP密钥管理如果你和我一样&#xff0c;日常开发中深度依赖Claude、Cursor、Windsurf这类智能编码助手&#xff0c;那你肯定对Model Context Protocol&#xff08;MCP&#xff09;不陌生。MCP作为连接AI模型与外部工具…...

VSCode写Verilog效率翻倍:除了语法检查,再教你用Python插件自动生成模块例化

VSCode写Verilog效率翻倍&#xff1a;Python插件自动化实战指南 在FPGA开发中&#xff0c;Verilog代码的重复性劳动往往消耗工程师大量时间。我曾在一个图像处理项目中被模块例化折磨得焦头烂额——手动编写30多个相同结构的FIFO例化代码&#xff0c;不仅容易出错&#xff0c;后…...

Arm DDT:高性能计算并行程序调试利器

1. Arm DDT调试工具概述Arm DDT&#xff08;Distributed Debugging Tool&#xff09;是Arm公司开发的一款专业级并行程序调试工具&#xff0c;专为高性能计算&#xff08;HPC&#xff09;领域设计。作为Arm Forge工具套件的重要组成部分&#xff0c;DDT提供了强大的MPI程序调试…...

光子储层计算在无人机动态补偿中的创新应用

1. 深度光子储层计算在无人机动态补偿中的创新应用在无人机控制领域&#xff0c;传统PID控制器面对复杂流体环境时往往力不从心。当无人机在狭窄空间或近地面飞行时&#xff0c;地面效应、天花板效应以及湍流再循环等未建模动力学因素会导致显著的性能下降。我在参与某城市峡谷…...

Spratt Skills:基于LLM规划与代码执行的OpenClaw家庭自动化架构实践

1. 项目概述&#xff1a;Spratt Skills&#xff0c;一个为OpenClaw打造的家庭自动化基础设施套件 如果你正在使用OpenClaw&#xff0c;并且已经厌倦了让LLM&#xff08;大语言模型&#xff09;去处理那些它天生就不擅长的事情——比如定时发送消息、轮询航班状态、或者可靠地写…...

超净实验室建设公司厂家:如何根据需求选择方案|中南实验室建设

在半导体制造、地质微量元素分析、生物制药等高精度领域&#xff0c;实验环境的洁净度直接影响数据可靠性与产品良率。超净实验室作为核心基础设施&#xff0c;其建设需融合空气动力学、材料科学、自动化控制等多学科技术。 一、超净实验室建设公司厂家的设计规划&#xff1a;…...

京东自动评价终极指南:如何用Python脚本轻松完成批量评价

京东自动评价终极指南&#xff1a;如何用Python脚本轻松完成批量评价 【免费下载链接】jd_AutoComment 自动评价,仅供交流学习之用 项目地址: https://gitcode.com/gh_mirrors/jd/jd_AutoComment 还在为京东购物后的繁琐评价工作烦恼吗&#xff1f;每次大促后面对几十个…...

C#元组类型简介

元组是 C# 7.0 引入的轻量级数据结构&#xff0c;用于临时组合多个值&#xff0c;无需定义专门的类或结构。 元组是有序的数据结构&#xff0c;成员按声明/创建时的顺序排列。&#xff08;这里的元组只指值元组&#xff09;元组类型在C#7.0前是有一个专门的内置类型&#xff0c…...

飞书文档批量导出工具:25分钟搞定700+文档的迁移难题

飞书文档批量导出工具&#xff1a;25分钟搞定700文档的迁移难题 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 当企业需要切换办公平台或进行数据备份时&#xff0c;飞书文档的批量迁移常常成为…...

计算机视觉模型选型实战:四维战场决策法

1. 项目概述&#xff1a;这不是一场技术选型&#xff0c;而是一次实战能力的现场测验 “计算机视觉的战场&#xff1a;选择你的冠军”——这个标题乍看像游戏海报&#xff0c;实则精准戳中了当前CV工程落地最真实的痛点。它不谈论文指标、不堆模型参数&#xff0c;而是把镜头直…...