一文带你快速了解ptrdiff_t

news2024/11/25 14:52:41

简介

ptrdiff_t是C/C++标准库中定义的一个与机器相关的数据类型。ptrdiff_t类型变量通常用来保存两个指针减法操作的结果。

ptrdiff_t定义在stddef.h(cstddef)这个文件内。

ptrdiff_t通常被定义为long int类型。

ptrdiff_t定义在C99标准中。

标准库类型(library type)ptrdiff_t 与 size_t 类型一样,ptrdiff_t也是一种与机器相关的类型,在 cstddef标准库头文件中定义。size_t 是unsigned 类型,而 ptrdiff_t 则是 signed 整型。

这两种类型的差别体现了它们各自的用途:size_t类型用于指明数组长度,它必须是一个正数;ptrdiff_t 类型则应保证足以存放同一数组中两个指针之间的差距,它有可能是负数。

示例

#include <stdio.h>
#include <stddef.h>
#include <string.h>

int main(void)
{
    char str[] = "Hello world!";
    char* pstart = str;
    char* pend = str + strlen(str);
    ptrdiff_t difp = pend - pstart;
    printf("%d\n", difp);
    return 0;
}

存在的意义?

在编译器中我尝试过用int接收两个指针的差距离,既然可以用int来表示,那他存在的意义是什么的,难道只是优雅吗?(优雅还是很重要的!)

size_t/ptrdiff_t数据类型是和机器相关的。其sizeof字节长度和指针字节长度是一致的。

 

根据上表,我们可以看到指针的字节长度:

  • 16 bit系统中,占用2字节(arduino nano)
  • 64 bit系统中,占用8字节(vc64/ios模拟器)
  • 32 bit系统中,占用4字节(除了上述3个系统外)

这种与机器类型相关的数据类型,我们可以称为机器相关数据类型

如果现在有个需求,我需要跨平台的使用统一数据类型来表示指针地址范围,该怎么办?

答: 两种方式:

  • typedef long long int64;
    使用最大字节长度的数据类型来容纳各个平台下的地址数据

  • 使用c/c++预先定义的机器相关数据类型: size_t/ptrdiff_t

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/4541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端】Vue+Element UI案例:通用后台管理系统-用户管理:Form表单填写、Dialog对话框弹出

文章目录目标代码0.页面结构1.新增按钮和弹出表单&#xff1a;结构2.新增按钮和弹出表单&#xff1a;点击新增弹出表单3.表单样式4.表单验证5.表单的提交和取消功能&#xff1a;接口、mock相关准备6.表单的提交和取消功能提供的数据和接口1-operateFormLabel.js5-user.js效果总…

小程序转App最便捷的方法,附实操

Flutter是谷歌的移动UI框架&#xff0c;可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界&#xff0c;Flutter正在被越来越多的开发者和组织使用&#xff0c;并且Flutter是完全免费、开源的。 它也是构建未来的Google Fuchsia应…

计算机网络(一)网络体系结构

layout: post title: 计算机网络&#xff08;一&#xff09;网络体系结构 description: 计算机网络&#xff08;一&#xff09;网络体系结构 tag: 计算机网络 计算机网络计算机网络体系基本概念网络性能指标数据量与数据速率&#xff08;比特率&#xff09;带宽吞吐量时延时延带…

Python入门自学进阶-Web框架——25、DjangoAdmin项目应用-分页与过滤

对于数据很多&#xff0c;就需要将数据进行分页显示&#xff0c;同时还要提供过滤功能。 当配置文件中配置了过滤条件&#xff0c;那就要在显示表信息的时候&#xff0c;显示过滤条件选择项&#xff0c;选择后进行过滤&#xff0c;然后下面显示过滤后的数据&#xff0c;如果数…

数据结构(单链表)

前沿&#xff1a; 在前面总结的顺序表的时候&#xff0c;最后也说出了他的一些缺点&#xff0c;例如头插/中间插的时候的时间复杂度是O(n)&#xff0c;这个效率并不高&#xff0c;而如何提高效率的实现呢&#xff0c;这里我们可以通过单链表来简单的提高这个效率。 思维导图&am…

java计算机毕业设计springboot+vue在线投票系统

项目介绍 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于在线投票系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了在线投票系统的发展&#xff0c;它彻底改变了…

Java初识:类和对象(上)

文章目录学习目标1.面向对象的初步认识1.1认识面向对象1.2 区分面向对象和面向过程2.类当定义与使用2.1认识简单类2.2 类的定义格式2.3 小试身手-定义类的小练习3.类的实例化3.1 什么是实例化3.2 实例化注意事项&#xff1a;3.3 类和对象说明4. this 引用4.1为什么要用this4.2 …

小程序意见反馈界面(简洁版代码)

在开发个人中心页面时&#xff0c;意见反馈功能是必不可少的&#xff0c;下面介绍该功能的具体开发流程 1、首先看一下效果图&#xff1a; 2、WXML代码&#xff0c;分为三个部分&#xff0c;文本域&#xff08;TextArea&#xff09;、输入框&#xff08;Input)、按钮&#xff…

程序员日常|为什么我在开发工作中偏爱这款键盘?

前言 最近一直不断地有粉丝朋友们私信我&#xff0c;问我该如何给自己挑选一款适合程序员工作的键盘&#xff0c;于是今天来给大家介绍下我用的键盘。 文章目录前言我的键盘亲身经历使用体验视频展示我的键盘 程序员作为一个需要长时间敲代码的职业&#xff0c;没有一个趁手的…

html静态网页设计制作 HTML我的家乡沧州网页代码 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

uint 与 int 相加,事与愿违?

#include <iostream> using namespace std; int main() { uint32_t uint_data -22; int int_data 0; if (uint_data int_data < 0) { cout <<"uint int负数小于0: "; } else { cout <<"…

ARM编程环境搭建教程

随着移动互联网的繁荣发展&#xff0c;物联网人工智能的兴起&#xff0c;嵌入式开发成为了越来越多IT人必须学习的内容&#xff0c;而在嵌入式芯片领域&#xff0c;ARM具有无可撼动的市场占有率&#xff0c;所以说&#xff0c;学习嵌入式不学ARM&#xff0c;不如回家卖红薯。 接…

C++ Reference: Standard C++ Library reference: C Library: cwctype: iswblank

C官网参考链接&#xff1a;https://cplusplus.com/reference/cwctype/iswblank/ 函数 <cwctype> iswblank int iswblank (wint_t c); 检查宽字符是否为空白 检查c是否为空字符。 空白字符是用于分隔一行文本中的单词的空格&#xff08;space character&#xff09;字符…

用色彩活出彩,能率Color Run上海之旅圆满结束

11月8日&#xff0c;以“用色彩&#xff0c;活出彩”为主题的能率|苏宁 Color Run活动&#xff0c;于上海圆满结束。此次活动由燃热领域代表品牌能率与苏宁易购集团联合举办&#xff0c;旨在通过有效户外运动&#xff0c;提倡健康快乐的生活方式&#xff0c;悦享多彩人生。 能率…

摄影网页设计制作 简单静态HTML网页作品 WEB静态摄影网站作业成品 学生DW摄影网站模板

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

C++语言基础篇

✅作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域新星创作者&#xff0c;阿里云专家博主&#xff0c;华为云云享专家博主&#xff0c;掘金后端评审团成员 &#x1f495;前言&#xff1a; 学长出的这一系列专栏适合有⼀点 C 基础&#xff0c…

PPT的“限制编辑”模式如何设置?

我们知道&#xff0c;Word文档和Excel表格都可以设置限制编辑&#xff0c;防止文件被随意改动&#xff0c;可是PPT文件里并没有“限制编辑”的选项&#xff0c;那要怎么设置呢&#xff1f; 其实&#xff0c;PPT的“只读模式”就等同于“限制编辑”模式&#xff0c;因为PPT文件…

【网页设计】期末大作业:化妆品主题——绿色大气的html5响应式化妆品护肤品肌肤网页设计(11页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Python解决图文验证码登录识别(1)

前言 本文是该专栏的第22篇,后面会持续分享python的干货知识,记得关注。 在信息爆炸的年代,爬虫对于在工作中进行信息的抽取,获取重要的数据源是一项非常不错的技能,可以说很久之前的爬虫几乎没什么难度,直到互联网的持续发展,陆陆续续出现了一大堆的反爬措施,给爬虫也…

【css 动画】css实现奔跑的北极熊

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;…