繁体   English   中英

为什么函数参数的类型为size_t?

[英]Why are function parameters of type size_t?

memset的原型为void *memset(void *s, int c, size_t n); 那么,为什么第三个参数是size_t类型呢? memset只是一个例子,我想要更一般的原因。 提前致谢。

size_tsizeof运算符的返回类型,用于描述内存大小。 对于memset ,它指定应设置为给定值(c)的内存块中的字节数(n)。

size_t位大小取决于目标平台的地址空间。 它并不总是与寄存器大小相关。 例如,在分段存储器体系结构中, sizeof (size_t)可以小于sizeof (void *) 通常, size_t在32位计算机上为4字节,在64位计算机上为8字节,依此类推。

size_t是用于表示对象大小的类型。 在C语言中,整数类型( intlong等)的大小与实现有关,并且您需要在每个编译器实现p上使用正确的类型,以使该大小足以存储所有可能的值。

平台SDK随附的标头将具有typedef ,它将size_t映射到正确的整数类型。 因此,您memset()编写一次memset() ,它就可以在每个实现上正确编译。

size_t是适合于表示数据对象所需的内存量的类型。 它是无符号整数类型(通常为typedef unsigned int size_t;)。

阅读链接以获取更多信息。

保证size_t足够大以在所有平台上保留一个指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM