首页 > 解决方案 > memset 手册说明:int 类型还是常量字节?

问题描述

我有一个关于memset手册条目的问题。这是我在手册中可以看到的memset

   void *memset(void *s, int c, size_t n);

[...]

描述

memset() 函数用常量字节 c 填充 s 指向的内存区域的前 n 个字节。

[...]

手册说with the constant byte c, butc是一个整数,其大小实际上取决于几个因素(编译器、体系结构......)。
在一般情况下,sizeof(int) > 1(通常4)。

我的问题是:为什么不是ca char,它总是有 a sizeofof1并因此对应于一个 byte ?
然后,memset 在边界情况下的“真实”行为是什么(未定义?)?
通过边界情况,我的意思是例如sizeof(int) = 4和的情况n=7

标签: ctypesmemsetmanual

解决方案


该标准有更好的措辞。

引用C11,第 7.24.6.1 章,

memset函数将c(转换为unsigned char) 的值复制到 指向的对象的前 n 个字符中的每一个中s


推荐阅读