用memset和for循环给数组初始化有什么不同? C++

例如:inta[10];for(i=0;i<10;i++)a[i]=0;和#include<stdlib.h>memset(a,0,sizeof(a));哪个跟常用些?... 例如:
int a[10];
for (i = 0; i < 10; i++)
a[i] = 0;

#include<stdlib.h>
memset(a, 0, sizeof(a));

哪个跟常用些?
展开
 我来答
tattackor
推荐于2016-08-21 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:888万
展开全部

1、效果是一样的,memset更常用。memset的效率比for循环要高出很多。

2、使用memset函数与将函数代码写在自己的程序里是不一样的,C标准库中的memset对Cache的利用做了优化,具体的在《C专家编程》151页有解释,这里给出测试:

    #include <string.h>  
    #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<MAXSIZE;j++)  
    //            arr[0] = '0';  
        }  
        return 0;  
    }


程序里的注释部分与memset行分别使用,结果是使用memset的程序运行时间大约为0.1s,而用for循环的程序要3s多。综上:memset()可以用在字符数组的初始化以及类似于memset(arr,0,n*sizeof(int));的情况,效率比手动赋值要高的多。

vknowi
2010-07-25 · TA获得超过230个赞
知道小有建树答主
回答量:551
采纳率:0%
帮助的人:427万
展开全部
用memset可以节省CPU的计算时间!for循除了计算时间不说,至少要存取十次,而MEMSET只存取一次,而且也好理解!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
源语梦Hg
2010-07-25 · TA获得超过521个赞
知道小有建树答主
回答量:670
采纳率:100%
帮助的人:274万
展开全部
memset是系统函数,你如果用包含了标准C中的头文件,就是由C完成了包装。
memset应该会更有效率一些,而且用起来方便。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5803c9a
推荐于2017-11-23 · TA获得超过2162个赞
知道小有建树答主
回答量:891
采纳率:0%
帮助的人:1235万
展开全部
效果是一样的,memset更常用
你是愿意写上好几行的for循环呢还是只写一行memset呢
其实memset的效率比for循环要高出很多
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mjl86
2010-07-25 · TA获得超过344个赞
知道小有建树答主
回答量:399
采纳率:0%
帮助的人:399万
展开全部
memset使用的时候要小心点,别把size写错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式