我对memset
及其manual's entry有疑问。这是我在memset
手册中看到的内容:
void *memset(void *s, int c, size_t n);
[...]
描述
memset()函数填充内存区域的前n个字节 指向s的常量字节c。
[...]
手册中说with the constant byte c
,但是c
是一个整数,其大小实际上取决于几个因素(编译器,体系结构...)。
在一般情况下,sizeof(int) > 1
(通常为4
)。
我的问题是:为什么c
不是char
,而sizeof
的{{1}}总是1
,因此对应于字节?
然后,边界条件下memset的“实际”行为是什么(未定义?)?
边界情况是指sizeof(int) = 4
和n=7
的情况。
答案 0 :(得分:1)
该标准的措词更好。
引用C11
,第7.24.6.1章,
memset
函数将c
的值(转换为unsigned char
)复制到s
所指向的对象的前n个字符中。