ptrdiff_t是C/C++標准庫中定義的一個與機器相關的
數據類型。ptrdiff_t類型
變量通常用來保存兩個
指針減法操作的結果。ptrdiff_t定義在stddef.h(cstddef)這個文件內。ptrdiff_t通常被定義為long int類型。
ptrdiff_t定義在C99標准中。
ptrdiff_t
標准庫類型(library type)ptrdiff_t 與 size_t 類型一樣,
ptrdiff_t 也是一種與機器相關的類型,在 cstddef 頭文件中定義。size_t 是unsigned 類型,而 ptrdiff_t 則是 signed 整型
[1]
。
size_t
這兩種類型的差別體現了它們各自的用途:
size_t 類型用於指明數組長度,它必須是一個正數;ptrdiff_t 類型則應保證足以存放同一數組中兩個指針之間的差距,它有可能是負數。
difference_type
是signed類型,表示迭代器差距,vector<int>:: difference_type = iter1-iter2.
ptrdiff_t與difference_type區別,前面的是c++定義的標准,后面則是STL定義的。
int *a=new int(1); int *b=new int(2); ptrdiff_t result=a-b; cout<<a<<ends<<b<<ends<<result<<endl;
000F8F08
000F8F38
-12
可以看出,
2個指針相減等於(地址相減的值)/指針所指向的數據類型。