c++ - 为什么 memset() 放在循环体内时不能正常工作?

标签 c++ c arrays memset

昨天我用 C++ 编写了一小段代码,其中包含一个循环和一个数组。在程序中,每次循环重新开始时我都需要重置数组。但是,如果我使用

memset(sum,sizeof(sum),0);

那么数组就不会被重置为全0。对于这个程序我使用了:

for (i=0;i<sizeof(sum)/sizeof(int);i++) sum[i]=0;

相反。

但是,我认为循环不像函数那样清晰,它需要一个额外的变量,更不用说这比 memset() 函数的魔法还要酷上百万倍。各位大神能给个启发吗?

最佳答案

您实际上是将 sum 的大小写入前 0 个字节。 您应该改为执行 memset(sum,0,sizeof(sum))

(换句话说,参数是目标数据长度,您提供的数据和长度的顺序错误。)

关于c++ - 为什么 memset() 放在循环体内时不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706173/

相关文章:

c++ - 多平台库设计。最佳实践

c - 如何从 C 中的 CURL 请求接收 JSON 对象?

javascript - 使用键属性显示不同的值

c - 每个循环扩展 1 个元素的数组 C

php - 在MySQL中使用“SET”且没有主键但条目相同的两个表之间的多列更新

c++ - 以特权用户身份运行 Windows 服务

c++ - 可变参数模板匹配和 SFINAE?

c++ - 使用类的链表

c++ - MOD 1000000007 好像不对

c++ - C、C++中的中断机制