c++中与机器有关的数据类型

本文详细介绍了C/C++中的特殊数据类型,包括size_t、size_type、ssize_t、ptrdiff_t和difference_type等,解释了它们的用途及定义方式,并补充说明了NULL的概念和定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.size_t

size_t是标准C库中定义的,应为unsigned int,在64位系统中为 long unsigned int。

 size_t类型通常用于循环、数组索引、大小的存储和地址运算。


2.size_type

由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型。


3.ssize_t

ssize_t是signed size_t,size_t是标准C库中定义的,应为unsigned int,定义为typedef int ssize_t。


4.ptrdiff_t 

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


5. difference_type

difference_typesigned类型,表示迭代器差距。例如:vector中 typedef ptrdiff_t difference_type。


补充(不是与机器相关的类型):

(1)NULL:

NULL表示空指针,用于表示一个无效的指针,它的值为0(早期C语言的实现中可能有非0空指针,现在已经不用)。对指针置NULL即标记指针无效,可以通过判断指针是否等NULL而防止指针的非法访问。


NULL在C/C++标准库中被定义为一个宏,一般为:

#define NULL ((void*)0) /*C中的“标准”写法,NULL被替换为一个void*类型的指针右值,值等于0;由于是void*类型,可以隐式转化为其它类型的指针。*/

#define NULL 0 //C++,相对C简化定义的原因是C++中void*无法自由隐式转换为其它类型的指针,而字面量0可以隐式转换为指针类型;尽管它实际上可以被作为整数0使用而不引起编译问题,但要注意,从设计目的上而言,NULL应当总是只作为空指针使用。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值