最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你快速了解C/C++標準庫中的ptrdiff_t

 更新時間:2022年11月11日 10:52:12   作者:康來個程  
ptrdiff_t是C/C++標準庫中定義的一個與機器相關的數據類型,ptrdiff_t類型變量通常用來保存兩個指針減法操作的結果,下面這篇文章主要給大家介紹了關于C/C++標準庫中ptrdiff_t的相關資料,需要的朋友可以參考下

簡介

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來表示,那他存在的意義是什么的,難道只是優(yōu)雅嗎?(優(yōu)雅還是很重要的?。?/strong>

size_t/ptrdiff_t數據類型是和機器相關的。其sizeof字節(jié)長度和指針字節(jié)長度是一致的。

根據上表,我們可以看到指針的字節(jié)長度:

  • 16 bit系統中,占用2字節(jié)(arduino nano)
  • 64 bit系統中,占用8字節(jié)(vc64/ios模擬器)
  • 32 bit系統中,占用4字節(jié)(除了上述3個系統外)

這種與機器類型相關的數據類型,我們可以稱為機器相關數據類型

如果現在有個需求,我需要跨平臺的使用統一數據類型來表示指針地址范圍,該怎么辦?

答: 兩種方式:

  • typedef long long int64;
    使用最大字節(jié)長度的數據類型來容納各個平臺下的地址數據
  • 使用c/c++預先定義的機器相關數據類型: size_t/ptrdiff_t

補充:ptrdiff_t與size_t的區(qū)別

標準庫類型(library type)ptrdiff_t 與 size_t 類型一樣,ptrdiff_t 也是一種與機器相關的類型,在cstddef 頭文件中定義。

size_t 是unsigned 類型,而 ptrdiff_t 則是 signed 整型

size_t類型用于指明數組長度,它必須是一個正數;ptrdiff_t 類型則應保證足以存放同一數組中兩個指針之間的差距,它有可能是負數

總結

到此這篇關于C/C++標準庫中ptrdiff_t的文章就介紹到這了,更多相關C/C++標準庫中ptrdiff_t內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • C++基礎入門教程(六):為什么創(chuàng)建類的時候要用new?

    C++基礎入門教程(六):為什么創(chuàng)建類的時候要用new?

    這篇文章主要介紹了C++基礎入門教程(六):為什么創(chuàng)建類的時候要用new?本文講解了使用new創(chuàng)建動態(tài)結構體、為什么要有new、自動存儲(自動變量、局部變量)、動態(tài)存儲、vector和array等內容,需要的朋友可以參考下
    2014-11-11
  • C語言 深入淺出講解指針的使用

    C語言 深入淺出講解指針的使用

    指針是C語言中一個非常重要的概念,也是C語言的特色之一。使用指針可以對復雜數據進行處理,能對計算機的內存分配進行控制,在函數調用中使用指針還可以返回多個值
    2022-03-03
  • Pthread?并發(fā)編程線程自底向上深入解析

    Pthread?并發(fā)編程線程自底向上深入解析

    這篇文章主要為大家介紹了Pthread?并發(fā)編程線程自底向上深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Qt生成隨機數的方法

    Qt生成隨機數的方法

    本文主要介紹了Qt生成隨機數,生成隨機數主要用到了函數qsrand和qrand,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++實現棧與分析棧的知識點

    C++實現棧與分析棧的知識點

    這篇文章主要介紹了C++實現棧與分析棧的知識點,棧(stack)是計算機中常用的一種線性數據結構,經常有資料使用“操作受限”來形容棧,因為它的壓入棧和彈出棧操作只能在棧頂進行,下文更多相關資料,需要的小伙伴可以參考一下
    2022-03-03
  • C語言數組詳細介紹

    C語言數組詳細介紹

    大家好,本篇文章主要講的是C語言數組詳細介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 詳解c++中的 static 關鍵字及作用

    詳解c++中的 static 關鍵字及作用

    這篇文章主要介紹了c++中的 static 關鍵字,在我們日常使用過程中,static通常有兩個作用,具體內容在文中給大家詳細介紹,需要的朋友可以參考下
    2020-02-02
  • vc6.0中c語言控制臺程序中的定時技術(定時器)

    vc6.0中c語言控制臺程序中的定時技術(定時器)

    這篇文章主要介紹了vc6.0中c語言控制臺程序中的定時技術(定時器),需要的朋友可以參考下
    2014-04-04
  • C++通過控制臺訪問deepseek接口并進行對話

    C++通過控制臺訪問deepseek接口并進行對話

    這篇文章主要為大家詳細介紹了C++如何通過控制臺訪問deepseek接口并進行對話,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-02-02
  • C++?using?編譯指令與名稱沖突問題

    C++?using?編譯指令與名稱沖突問題

    using?編譯指令由名稱空間名和它前面的關鍵字?using?namespace?組成,它使名稱空間中的所有名稱都可用,而不需要使用作用域解析運算符,這篇文章主要介紹了C++?using?編譯指令與名稱沖突,需要的朋友可以參考下
    2022-11-11

最新評論

龙南县| 肇庆市| 新建县| 白城市| 潜山县| 罗甸县| 广南县| 佛学| 垫江县| 定远县| 杂多县| 麻阳| 冀州市| 新疆| 吐鲁番市| 大安市| 安达市| 昆明市| 建水县| 达日县| 万宁市| 友谊县| 姜堰市| 曲阜市| 衡水市| 子洲县| 托里县| 金昌市| 海兴县| 凯里市| 淮安市| 岑溪市| 九江市| 新竹市| 施甸县| 德兴市| 滨州市| 青铜峡市| 平果县| 依兰县| 谷城县|