manpage谈到memset:#includevoid*memset(void*s,intc,size_tn)Thememset()functionfillsthefirstnbytesofthememoryareapointedtobyswiththeconstantbytec.很明显memset不能用来初始化int数组如下图:inta[10];memset(a,1,sizeof(a));这是因为int由4个字节(比如说)表示,并且无法为数组a中的整数获得所需的值。但我经常看到程序员使用memset将int数组元素设置为0或-1。inta[10];intb[10];memset(a
有什么理由使用非标准的bzero()和bcopy()而不是memset()和在Linux环境中使用memcpy()?我听到很多人说它们更适合Linux编译器,但没有看到比标准函数有任何优势。它们是否比标准的更优化,或者它们是否有任何行为的特殊性,它们是首选的? 最佳答案 虽然bzero和bcopy函数不是ISOC(我假设您在将它们称为非标准时所说的实际标准),但它们是一个POSIX标准的东西,尽管它们早于ISO和POSIX。并注意使用"is"这个词-这些函数在POSIX.1-2001中已弃用,并在POSIX.1-2008中最终删除,
有什么理由使用非标准的bzero()和bcopy()而不是memset()和在Linux环境中使用memcpy()?我听到很多人说它们更适合Linux编译器,但没有看到比标准函数有任何优势。它们是否比标准的更优化,或者它们是否有任何行为的特殊性,它们是首选的? 最佳答案 虽然bzero和bcopy函数不是ISOC(我假设您在将它们称为非标准时所说的实际标准),但它们是一个POSIX标准的东西,尽管它们早于ISO和POSIX。并注意使用"is"这个词-这些函数在POSIX.1-2001中已弃用,并在POSIX.1-2008中最终删除,
memset()被声明为返回void*,该值始终与传递给函数的地址相同。返回值有什么用?为什么不返回void? 最佳答案 它可以用于调用链,例如:chara[200];strcpy(memset(a,0,200),"bla"); 关于c++-memset()返回值有什么用?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13720428/
memset()被声明为返回void*,该值始终与传递给函数的地址相同。返回值有什么用?为什么不返回void? 最佳答案 它可以用于调用链,例如:chara[200];strcpy(memset(a,0,200),"bla"); 关于c++-memset()返回值有什么用?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13720428/