memset函数及注意事项

摘要:
尺寸_ tnum);用于将值分配给从地址ptr开始的num字节。使用memset为请求的数组赋值时。memset函数为数组赋值(也可以使用单个变量)。从ptr开始的每个num字节都分配了一个值,可以是任何字符值。(2) 如果ptr指向非字符地址(即,最小存储单元不是字节的数据类型);值的值只能是-1或0。假设int类型占用四个字节。

  memset函数的原型为:void * memset(void *ptr,int value,size_t num);用于为地址ptr开始的num个字节赋值value。

  memset函数的头文件为:C:<memory.h>或<string.h>    C++:<cstring>。

  在用memset为申请的数组赋值时,如果了解他的赋值原理,很有可能会造成一些不必要的隐形错误,令人头疼不已。memset函数在为数组(单个变量也可以)赋值时,是逐个字节赋值的,ptr开始的num个字节中的每个字节都赋值为value。所以我们就要注意了:

  (1)若ptr指向的是char型地址,value可以为任意字符值。(因为一个字符占一个字节);

  (2)若ptr指向的非char型地址(即最小存储单位不是一个字节的数据类型),如int型地址,要想赋值正确,value的值只能是-1或0,因为-1和0转换为二进制后每一位都是一样的,这里假设int型占四个字节,则-1=0XFFFFFFFF,0=0X00000000。

  例:正确赋值:

        int a[10];

        memset(a,-1,sizeof(a));

 memset函数及注意事项第1张

  赋值后a中元素为:0xFF 0XFF 0XFF 0XFF。因为int型占四个字节,memset的赋值方式是逐个字节进行赋值,所以元素的值实际上是四个字节合在一起的值:0XFFFFFFFF=-1。

  例:错误赋值:

        int a[10];

        memset(a,1,sizeof(a));

  赋值后a中元素为:0X01 0X01 0X01 0X01,即:0X01010101=16843009。

memset函数及注意事项第2张

免责声明:文章转载自《memset函数及注意事项》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇旋转字体的设置tcp之快速重传与恢复下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

库、教程、论文实现,这是一份超全的PyTorch资源列表(Github 2.2K星)

项目地址:https://github.com/bharathgs/Awesome-pytorch-list 列表结构: NLP 与语音处理 计算机视觉 概率/生成库 其他库 教程与示例 论文实现 PyTorch 其他项目 自然语言处理和语音处理 该部分项目涉及语音识别、多说话人语音处理、机器翻译、共指消解、情感分类、词嵌入/表征、语音生成、文本语音转...

error LNK2019: 无法解析的外部符号,解决办法

最近在看一个程序,每次编译时都会出现 chushihua.obj : error LNK2019: 无法解析的外部符号 "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<ch...

WAI-ARIA无障碍网页资料

西门小白菜 我很骄傲,因为我是小白菜一枚! WAI-ARIA无障碍网页资料 一、ARIA是啥?      WAI-ARIA指无障碍网页应用。主要针对的是视觉缺陷,失聪,行动不便的残疾人以及假装残疾的测试人员。尤其像盲人,眼睛看不到,其浏览网页则需要借助辅助设备,如屏幕阅读器,屏幕阅读机可以大声朗读或者输出盲文。而ARIA就是可以让屏幕阅读器准确识别...

转:Oracle11g面向开发人员的重要新特性:Pivot 和 Unpivot

  Pivot 和 Unpivot使用简单的 SQL 以电子表格类型的交叉表报表显示任何关系表中的信息,并将交叉表中的所有数据存储到关系表中。Pivot如您所知,关系表是表格化的,即,它们以列-值对的形式出现。假设一个表名为 CUSTOMERS。 SQL> desc customersName                           ...

纹理映射 【转】

9.4 纹理对象 使用纹理对象来存储纹理数据的步骤: 1) 生成纹理对象名称 2) 将纹理对象绑定到纹理数据(包括图像数据数组和纹理属性), 即创建纹理对象. 3) 如果OpenGL实现高性能纹理工作集, 应检查是否有足够的空间来存储所有的纹理对象. 如没有足够空间, 应设置每个纹理对象的优先级, 以确保最常用的纹理留在工作集中 4) 绑定和重新绑定纹理对...

oracle查询数据中包含字段替换其他内容

有个需求,三个页面类型的表单调用同一个数据表(反馈、计划、汇总三大类),为了区分三大类,我在表单加了反馈类型字段。 计划表单手动维护,反馈表单的时候,自动填充数据(需要查询计划表单维护的数据,反馈类型是计划了,但是现在是做反馈表单) 通过sql的函数replace,实现查询的时候如果是计划的,替换成反馈汉字,这样查询的数据返回表单是反馈类型了,用户维护其...