c - 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
)。
我的问题是:为什么不是c
a char
,它总是有 a sizeof
of1
并因此对应于一个 byte ?
然后,memset 在边界情况下的“真实”行为是什么(未定义?)?
通过边界情况,我的意思是例如sizeof(int) = 4
和的情况n=7
。
解决方案
该标准有更好的措辞。
引用C11
,第 7.24.6.1 章,
该
memset
函数将c
(转换为unsigned char
) 的值复制到 指向的对象的前 n 个字符中的每一个中s
。
推荐阅读
- python-3.x - 使用 Python 在 AWS 中创建具有名称的快照
- r - 数学运算对每个类别的两列进行分组总和
- powerbi - 将 Survey Monkey 与 Power BI 连接时出现空白行
- c# - 使用 Blazor
给出警告:元素 'option' 不能嵌套在元素 'p' 内 - javascript - 在 Wordpress 主页中显示带有缩略图、标题和页数限制的子页面
- android - iOS/Android NFC 标签读取安全问题
- odata - 如何在 Azure 存储资源管理器中查询“非空”或“非空”
- java - 如何转换列表
- visual-studio-2017 - 我可以在调试模式下停止 Visual Studio URL 解码命令参数吗?
- asp.net - 从 ASP.NET Core 2.0 迁移到 2.1