memsetの使い方

3044 ワード

memset
memsetはコンピュータのC/C++言語関数です.sが指すあるブロックのメモリの中の最初のnバイトの内容をすべてchが指定したASCII値に設定し、最初の値は指定したメモリアドレスであり、ブロックの大きさは3番目のパラメータによって指定され、この関数は通常、新しい申請のメモリの初期化作業を行い、その戻り値はsを指すポインタである.この関数は配列操作時に配列の0または-1にのみ使用でき、他の値は無効です(エラー値が発生します).
#include
#include 
#define MAXSIZE 20
int main()
{
    char str[MAXSIZE] = "hello world!";
    puts(str);
    memset(str, 'h', 3);//        
    puts(str);
    return 0;
}

  :

hello world!
hhhlo world!

Process returned 0 (0x0)   execution time : 0.016 s
Press any key to continue.

1.整数配列の初期化:memset(iarr,0,sizeof(iarr);またはmemset(iarr,-1,sizeof(iarr);2.初期化文字列:memset(str,'0',sizeof(str);
誤った使い方memset(iarr,1,sizeof(iarr);iarr配列の値は1ではなく16843009です
16843009(10)->0000 0001 0000 0001 0000 0001 0000 0001 0000 0001(2)(元/逆/補コード)をバイナリ化するのはint型の4バイトサイズで、memsetがバイト単位でメモリを初期化していることがわかります
      
 0(10) --> 0000 0000 0000 0000 0000 0000 0000 0000(2) 
-1(10) --> 1000 0001 (2)(  )
       --> 1000 0000 (2)(  )
       --> 1111 1111 (2)(  )
-1(10) --> 1111 1111 1111 1111 1111 1111 1111 1111(2) (  )
       --> 1111 1111 1111 1111 1111 1111 1111 1110(2) (  )
       --> 1000 0000 0000 0000 0000 0000 0000 0001(2) (  )

参照リンク1参照リンク2