用memset和for循环给数组初始化有什么不同? C++
答案:5 悬赏:60 手机版
解决时间 2021-03-26 06:08
- 提问者网友:献世佛
- 2021-03-25 17:06
用memset和for循环给数组初始化有什么不同? C++
最佳答案
- 五星知识达人网友:西风乍起
- 2021-03-25 17:17
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));的情况,效率比手动赋值要高的多。
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
}
return 0;
}
程序里的注释部分与memset行分别使用,结果是使用memset的程序运行时间大约为0.1s,而用for循环的程序要3s多。综上:memset()可以用在字符数组的初始化以及类似于memset(arr,0,n*sizeof(int));的情况,效率比手动赋值要高的多。
全部回答
- 1楼网友:爱难随人意
- 2021-03-25 20:26
memset使用的时候要小心点,别把size写错了
- 2楼网友:洒脱疯子
- 2021-03-25 19:57
用memset可以节省CPU的计算时间!for循除了计算时间不说,至少要存取十次,而MEMSET只存取一次,而且也好理解!
- 3楼网友:英雄的欲望
- 2021-03-25 18:53
memset是系统函数,你如果用包含了标准C中的头文件,就是由C完成了包装。
memset应该会更有效率一些,而且用起来方便。
memset应该会更有效率一些,而且用起来方便。
- 4楼网友:独行浪子会拥风
- 2021-03-25 18:31
效果是一样的,memset更常用
你是愿意写上好几行的for循环呢还是只写一行memset呢
其实memset的效率比for循环要高出很多
你是愿意写上好几行的for循环呢还是只写一行memset呢
其实memset的效率比for循环要高出很多
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯