`
阿尔萨斯
  • 浏览: 4199446 次
社区版块
存档分类
最新评论

memset用法

 
阅读更多

memset用法

首先如果是一个int a[10]的数组,只可以对它进行两种操作:

memset(a,0,sizeof(a))操作可以得到a的全0数组.

memset(a,-1,sizeof(a))操作可以得到a的全-1数组.

如果要置a为其他置的话就会出现不可预测的值.

这个原因很好解释:

因为memset操作是对字符进行操作的,且计算机中保存带符号数都是按补码保存的.

当我们置a[i](int)为0时,我们其实是对a的内存空间的每个直接都置0,所以正确.

当我们置a[i](int)为-1时,我们其实是对a的内存空间置11111111(-1的补码),不论是8个1还是32个1,它们都表示的是-1,所以可以置为-1.

如果是char a[10]数组的话,可以置a[i]的值为:

[-128,127]中的任意整数.

如果置其他的数就会出现不可预测的值.

如果是unsigned char a[10],那么可以置值的范围是:

[0,255].

这个原理和上面是一样的,对于我们设置值的时候直接把对应值转化为其补码,然后对每个内存字节操作.

在操作完了之后,内存字节已经按照我们的要求改变了,但是当我们要读数据的时候,我们会把内存中的内容翻译成我们本来定义的类型,所以这时候可能会出现不一致的现象.

比如unsigned char a[10] 数组,执行memset(a,-1,sizeof(a));后

内存a数组的每个字节都是11111111,但是当我们读取a[i]的时候读到了11111111,编译器再把11111111转化为unsigned char 就会返回255这个值给我们.

以上内容属于本人猜测,如有错误,希望大家指正我哦.

分享到:
评论

相关推荐

    memset用法 很详细

    memset用法。。。。。。。。。。。。。。

    C语言memset用法详解.zip

    C语言memset用法详解

    memset函数用法.rar

    memset

    C语言memset函数使用方法详解

    C语言memset函数使用方法详解 一。函数原形 void * memset(void*s, int ch,size_t n) 二。函数作用 将以s内存地址为首的连续n个字节的内容置成ch,一般用来对大量结构体和数组进行清零 三。常见错误 1.搞反...

    memset的初浅体会

    在学习memset函数的时候,查了一些资料,转一个对memset()的用法的一些初浅的体会。

    五分钟搞定memset函数(秒懂)memset**五分钟搞定memset函数:小学生也能掌握的C语言魔法

    内容涵盖memset函数的定义、使用方法、注意事项、局限性、安全性、优化技巧以及社区支持等高级内容。 **适用人群:** 本教程适合所有对编程和C语言感兴趣的初学者,尤其是那些需要了解如何在C语言中使用memset函数的...

    memset,memcpy,strcpy 的用法

    memset,memcpy,strcpy 的用法,详细区别还有优缺点对比!

    C++中memset函数用法详解

    主要介绍了C++中memset函数用法,结合实例形式详细分析了memset函数的功能、使用方法与相关注意事项,需要的朋友可以参考下

    深入学习C语言中memset()函数的用法

    memset() 函数用来将指定内存的前n个字节设置为特定的值,其原型为:   void * memset( void * ptr, int value, size_t num ); 参数说明: ptr 为要操作的内存的指针。 value 为要设置的值。你既可以向 value ...

    memset()的用法.pdf

    。。。

    C++中ZeroMemory、memset危险需慎用

    使用C/C++编程时,常使用ZeroMemory、memset或 “={0}”来对结构体对象进行初始化或清零。然而这三种方式都有各自的特点,使用时需谨慎,否则容易出现严重错误,本人解决一个导致宕机的bug,查了几小时,才发现是由...

    c++ 面试题 总结

    memset(a,0,sizeof(a)); int i=0,j; char t; cin.getline(a,50,'\n'); for(i=0,j=strlen(a)-1;i(a)/2;i++,j--) { t=a[i]; a[i]=a[j]; a[j]=t; } cout; } //第二种 string str; cin>>str; str.replace; ...

    MFC中几个类型及函数的说明

    LPCTSTR,UpdateData,memset,strstr这几个资源的详细用法说明。

    选择文件夹 dll 封装

    使用方法: char sPath[1000]; void _stdcall (*GetSelectPath)(char*sPath,AnsiString sTitle); HMODULE pHModule; pHModule=::LoadLibraryA("GetPath.dll"); if(pHModule>0) { (FARPROC&)GetSelectPath=::...

    vc base64工具库

    使用方法: #include "base64.h" string base64str; //这个数组我是从文件读入的 可以直接定义个数组测一下 unsigned char *pBmpBuf; ........ //原字符数组 const unsigned char* pBmpBuftmp = pBmpBuf; char...

    Visual C++开发经验技巧宝典(第1章)

    0001 注释的使用方法及注意事项 2 0002 使用汇编语言 2 0003 如何使用内联函数 2 0004 如何使用#define自定义宏 3 0005 使用goto语句进行无条件跳转 3 0006 while循环转为for循环 3 0007 do while循环...

Global site tag (gtag.js) - Google Analytics