浅谈 memset 函数的第二个参数为什么是 int 而不是 char

之所以 memset 函数的第二个参数为什么是 int 而不是 char, 只要有以下几个原因:1)为了兼容用字符常量对字符串或是字符数组的初始化(字符常量(如'a')在C语言中被认为成int类型);2)为了照顾已有的比较老的代码(C89标准之前);3)为函数调用,入栈;4)自动类型转换。


这篇博客是在一个好哥们的鼓励下写的。三个要好的朋友,有一个要走,我们为他践行。饭桌上讨论起了技术问题,其中有一个就是关于 memset 函数的第二个参数为什么是 int 而不是 char 。今天我就把我们所讨论的内容记下来(这让我想起了”小虎队“和《一路顺风》)。欢迎高手吐槽。


先给出 memset 的定义,linux-2.6.22.6/lib/string.c

/**
 * memset - Fill a region of memory with the given value
 * @s: Pointer to the start of the area.
 * @c: The byte to fill the area with
 * @count: The size of the area.
 *
 * Do not use memset() to access IO space, use memset_io() instead.
 */
void *memset(void *s, int c, size_t count)
{
        char *xs = s;

        while (count--)
                *xs++ = c;
        return s;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值