memset的原型是void *memset(void *s, int c, size_t n);
。那么为什么第三个参数的类型为size_t
? memset
只是一个例子,我想要更多的一般原因。提前谢谢。
答案 0 :(得分:5)
size_t
是sizeof
运算符的返回类型,用于描述内存大小。在memset
的情况下,它指定应设置为给定值(c)的内存块中的字节数(n)。
size_t
的位大小因目标平台的地址空间而异。它并不总是与寄存器大小相关。例如,在分段存储器架构中,sizeof (size_t)
可以小于sizeof (void *)
。通常,size_t
在32位计算机上为4个字节,在64位计算机上为8个字节,等等。
答案 1 :(得分:2)
size_t
是用于表示对象大小的类型。在C大小的整数类型(int
,long
等)是依赖于实现的,您需要在每个编译器实现上使用正确的类型,以便大小足以存储所有可能的值
平台SDK附带的标头将有一个typedef
,可将size_t
映射到正确的整数类型。所以你只需编写一次memset()
,就可以在每次实现时编译。
答案 2 :(得分:1)
size_t是一种适合表示数据对象所需内存量的类型。它是无符号整数类型(通常,typedef unsigned int size_t;)。
阅读this链接以获取更多信息。
答案 3 :(得分:-2)
size_t
保证足够大,可以在所有平台上保存指针。