memsetの使い方
3044 ワード
memset
memsetはコンピュータのC/C++言語関数です.sが指すあるブロックのメモリの中の最初のnバイトの内容をすべてchが指定したASCII値に設定し、最初の値は指定したメモリアドレスであり、ブロックの大きさは3番目のパラメータによって指定され、この関数は通常、新しい申請のメモリの初期化作業を行い、その戻り値はsを指すポインタである.この関数は配列操作時に配列の0または-1にのみ使用でき、他の値は無効です(エラー値が発生します).
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がバイト単位でメモリを初期化していることがわかります
参照リンク1参照リンク2
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