• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于menset函数的疑问

donatello 2017-12-31 浏览量:976

​如题,在标准C语言函数库中有个memset函数,其作用一般是给char型数组赋值,但是数组是可以直接下标访问的,请问这两种赋值方法是不是存在区别呢?

char buffer[size];

方法1:memset(buffer,0,sizeof(buffer));

方法2:
for(i=0;i<sizeof(buffer);i++)
buffer[i]=0;


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 效果是一样的,memset是C语言标准库里的一个函数,使用起来规范些。
    • 发布于 2017-12-31
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :UMK325AB7106KMHP 厂牌:Taiyo Yuden 回复

其他答案 数量:8
  • memset,效率高些,效果都一样。
    • 发布于2017-12-31
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :见附件 回复

  • 两种方式都可以实现,不过memset底层应该优化过了,效率应该高很多

    • 发布于2017-12-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 效果都一样,不过memset函数应该更好一点,毕竟是库函数
    • 发布于2017-12-31
    • 举报
    • 评论 2
    • 0
    • 0
电子老工程师 回复了  :尾缀包装区别,653卷装,652散装 回复
电子老工程师 回复了  :尾缀包装区别,653卷装,652散装 回复

  • 效果是一样的,书上一般都不说明哪个效率高
    • 发布于2017-12-31
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :客户在测试中,后续在联系 回复

  • 首先,你方法1起有一点错误,这里正确的处理应该是

    memset( buffer, 0, sizeof( char )*size );
    另外memset虽然只能以char值来填充区域,但它实质是为了配合malloc申请内存区域后的初始化(标准化),以保证防止(减少)以后在使用中有未定义访问时出现问题(代码更健壮),比如:

    //一个自定义的myClass结构体区域有size个元素,其内存申请和初始化
    
    myClass * pAmyClass;
    pAmyClass = (myClass *) malloc( sizeof(myClass)*size );
    memset( pAmyClass, 0, sizeof(myClass)*size );
    

    • 发布于2018-01-01
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :是对应关系 回复

电子老工程师 回复了  :料件2005年已经停产很久,没有相关参数信息,无法选型。 回复

  • 如果你特定为char型方式访问我感觉市一样的,如果你准备幅值的不是char型,是一个结构体,我感觉用memset你的程序结构会比较清楚,同时执行效率memset应该是经过优化的,效率也比较高一点.
    • 发布于2018-01-01
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :https://www.analog.com/media/en/technical-documentation/data-sheets/ADXL362.pdf 回复

相关问题

问题达人换一批

关于menset函数的疑问