关于size_t, ptrdiff_t, size_type, difference_type
来源:互联网 发布:堆排序java 编辑:程序博客网 时间:2024/05/16 07:18
对于指向同一数组arr[5]中的两个指针之差的验证:
运行输出:4
更换为字符数组,测试结果一样。
《C和指针》P110 分析如下:两个指针相减的结果的类型为ptrdiff_t,它是一种有符号整数类型。减法运算的值为两个指针在内存中的距离(以数组元素的长度为单位,而非字节),因为减法运算的结果将除以数组元素类型的长度。所以该结果与数组中存储的元素的类型无关。
类似的还有如下类型:
size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_t.设计size_t就是为了适应多个平台,其引入增强了程序在不同平台上的可移植性。
ptrdiff_t是signed类型,用于存放同一数组中两个指针之间的差距,它可以使负数,std::ptrdiff_t.同上,使用ptrdiff_t来得到独立于平台的地址差值.
size_type是unsigned类型,表示容器中元素长度或者下标,vector<int>::size_type i = 0;
difference_type是signed类型,表示迭代器差距,vector<int>:: difference_type = iter1-iter2.
前二者位于标准类库std内,后二者专为STL对象所拥有。
//=====================================================================================
http://blog.csdn.net/yyyzlf/article/details/6209935
C and C++ define a special type for pointer arithmetic, namely ptrdiff_t, which is a typedef of a platform-specific signed integral type. You can use a variable of type ptrdiff_t to store the result of subtracting and adding pointers.For example:
#include <stdlib.h>int main(){ int buff[4]; ptrdiff_t diff = (&buff[3]) - buff; // diff = 3 diff = buff -(&buff[3]); // -3}
What are the advantages of using ptrdiff_t? First, the name ptrdiff_t is self-documenting and helps the reader understand that the variable is used in pointer arithmetic exclusively. Secondly, ptrdiff_t is portable: its underlying type may vary across platforms, but you don't need to make changes in the code when porting it.
- 关于size_t, ptrdiff_t, size_type, difference_type
- 关于size_t, ptrdiff_t, size_type, difference_type
- 关于size_t, ptrdiff_t, size_type, difference_type
- 关于size_t, ptrdiff_t, size_type, difference_type
- 关于size_t, ptrdiff_t, size_type, difference_type
- 关于size_t, ptrdiff_t, size_type, difference_type
- 关于size_t, ptrdiff_t, size_type, difference_type
- 关于size_t, ptrdiff_t, size_type, difference_type
- size_type,size_t和ptrdiff_t
- size_type、size_t、different_type以及ptrdiff_t
- size_t,size_type,ptrdiff_t的区别
- size_type、size_t、different_type以及ptrdiff_t
- size_type、size_t、different_type以及ptrdiff_t
- size_type、size_t、differentce_type以及ptrdiff_t
- size_type、size_t、different_type以及ptrdiff_t
- size_type、size_t、different_type以及ptrdiff_t 的使用
- 关于size_t与size_type
- size_t & ptrdiff_t
- CSS动画一些笔记
- qt的pos()和globalpos()
- UVa 10780 - How do you add? (简单DP 组合数学 隔板法)
- Unable to start activity ComponentInfo
- 【LeetCode】Construct Binary Tree from Inorder and Postorder Traversal
- 关于size_t, ptrdiff_t, size_type, difference_type
- 护眼色
- [Hibernate开发之路](4)ID生成策略
- 进程控制原理
- poj3349~差点超时的哈希表
- Populating Next Right Pointers in Each Node 找出每个节点的下一节点(重重)二叉树
- linux中TFTP配置
- 快速入门C++ 01(OO思想)
- Java中静态代码块,静态变量,静态方法,构造方法初始化顺序