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

时间:2010-04-08 13:01:20

标签: c

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

4 个答案:

答案 0 :(得分:5)

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

size_t的位大小因目标平台的地址空间而异。它并不总是与寄存器大小相关。例如,在分段存储器架构中,sizeof (size_t)可以小于sizeof (void *)。通常,size_t在32位计算机上为4个字节,在64位计算机上为8个字节,等等。

答案 1 :(得分:2)

size_t是用于表示对象大小的类型。在C大小的整数类型(intlong等)是依赖于实现的,您需要在每个编译器实现上使用正确的类型,以便大小足以存储所有可能的值

平台SDK附带的标头将有一个typedef,可将size_t映射到正确的整数类型。所以你只需编写一次memset(),就可以在每次实现时编译。

答案 2 :(得分:1)

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

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

答案 3 :(得分:-2)

size_t保证足够大,可以在所有平台上保存指针。