永发信息网

为什么memset不能将数组元素初始化为1

答案:1  悬赏:30  手机版
解决时间 2021-01-28 19:15
  • 提问者网友:藍了天白赴美
  • 2021-01-27 21:56
为什么memset不能将数组元素初始化为1
最佳答案
  • 五星知识达人网友:十鸦
  • 2021-01-27 23:29
1、效果是一样的,memset更常用。memset的效率比for循环要高出很多。
2、使用memset函数与将函数代码写在自己的程序里是不一样的,C标准库中的memset对Cache的利用做了优化,具体的在《C专家编程》151页有解释,这里给出测试:

#include
#define MAXSIZE 100000

int main()
{
char arr[MAXSIZE];
for(int i=0;i<10000;i++)
{
memset(arr,'0',sizeof(arr));
// for(int j=0;j// arr[0] = '0';
}
return 0;
}

程序里的注释部分与memset行分别使用,结果是使用memset的程序运行时间大约为0.1s,而用for循环的程序要3s多。综上:memset()可以用在字符数组的初始化以及类似于memset(arr,0,n*sizeof(int));的情况,效率比手动赋值要高的多。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯