济宁网站设计,宜宾建设局网站,鞍山兼职吧,哪个平台做网站好点击上方蓝字关注我#xff0c;了解更多咨询1.函数原型及功能memset()函数原型为#xff1a;函数功能#xff1a;将_Dst所指区域的前size_t个字节均初始化为_val#xff0c;调用时需要引用string.h头文件memset()函数多用于数组和结构体这种占用内存比较大的数据结构的初始… 点击上方蓝字关注我了解更多咨询1.函数原型及功能memset()函数原型为函数功能将_Dst所指区域的前size_t个字节均初始化为_val调用时需要引用string.h头文件memset()函数多用于数组和结构体这种占用内存比较大的数据结构的初始化如果没有对其进行初始化常常会产生一些野值。此外读者可能对_cdcel和size_t比较陌生这里稍微解释下其中_cdecl表示C/C和MFC程序默认使用的调用约定所有参数从右到左依次入栈这些参数由调用者清除称为手动清栈。这里不详细说明后续会写一篇关_cdecl、_stdcall、_fastcall的文章,读者可去我的主页查看size_t是宏定义unsigned int或unsigned _int64的替换体2.使用memset()函数2.1 用memset()函数给数组初始化结果为memset 一般使用0初始化内存单元,需要注意的是memset()函数是对size_t个字节进行赋值而int类型为4个字节如果写成这样便是错误的正确写法为这等价于例中的写法2.2 用memset()函数给结构体初始化通过memset()函数初始化要比挨个对结构体中成员初始化要方便很多。如果是对结构体数组初始化的话3.容易忽视的错误错误1sizeof(指针)先来看一个例子大家觉得结果是什么是“0 0 0 0 0 0 0 0 0 0”吗错误结果应该是为什么会这样因为str是指针变量无论str指向的是什么类型的变量str终究只是存储了地址sizeof(str)永远等于4所以我们只将前面4个字节置为0而后面的-52应该是乱码的表示因为后面六个字节是没有初始化的关于-52知道的读者可以在评论区留言我们平常可以通过指针或数组名来操控数组元素的值如str[i],a[i],*(stri)都是正确的写法但务必记住的是指针和数组名不完全相同具体区别我会另写一篇文章讲解。错误2多字节类型变量赋非0值与想像的不同还是来看一个例子大家觉得结果是什么呢是“1 1 1 1 1 1 1 1 1 1”吗正确答案为memset()函数赋值时是对数组b的每个字节赋值所以每个数组元素的值为转换为10进制便是16843009END*声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。戳“阅读原文”我们一起进步