[英]Why are function parameters of type size_t?
memset的原型为void *memset(void *s, int c, size_t n);
。 那么,为什么第三个参数是size_t
类型呢? memset
只是一个例子,我想要更一般的原因。 提前致谢。
size_t
是sizeof
运算符的返回类型,用于描述内存大小。 对于memset
,它指定应设置为给定值(c)的内存块中的字节数(n)。
size_t
位大小取决于目标平台的地址空间。 它并不总是与寄存器大小相关。 例如,在分段存储器体系结构中, sizeof (size_t)
可以小于sizeof (void *)
。 通常, size_t
在32位计算机上为4字节,在64位计算机上为8字节,依此类推。
size_t
是用于表示对象大小的类型。 在C语言中,整数类型( int
, long
等)的大小与实现有关,并且您需要在每个编译器实现p上使用正确的类型,以使该大小足以存储所有可能的值。
平台SDK随附的标头将具有typedef
,它将size_t
映射到正确的整数类型。 因此,您memset()
编写一次memset()
,它就可以在每个实现上正确编译。
size_t是适合于表示数据对象所需的内存量的类型。 它是无符号整数类型(通常为typedef unsigned int size_t;)。
阅读此链接以获取更多信息。
保证size_t
足够大以在所有平台上保留一个指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.