【MQL5】sizeof演算子について

MQL5リファレンス
スポンサーリンク
スポンサーリンク

sizeof演算子とは

sizeof演算子は、指定したデータ型やオブジェクト(変数配列など)のサイズをバイト(byte)単位で返す演算子です。

メモリ管理やバッファ(データを一時的に保存する領域)のサイズ計算など、さまざまな場面で使用されます。この記事では、MQL5におけるsizeof演算子の基本的な使い方を解説します。

sizeof演算子の基本的な使い方

sizeof演算子の構文は以下の通りです。

sizeof(type);
sizeof(object);

typeデータ型object変数配列などのオブジェクトです。

sizeof演算子は、指定されたデータ型やオブジェクトのメモリサイズをバイト単位で返します。

sizeof演算子の使用例

基本データ型に対するsizeofの使用例

以下のコードは、基本データ型に対するsizeof演算子の使用例です。

void OnStart()
{
    // int型のサイズを出力
    Print("Size of int: ", sizeof(int));  // int型のサイズをバイト単位で表示します
    
    // double型のサイズを出力
    Print("Size of double: ", sizeof(double));  // double型のサイズをバイト単位で表示します
    
    // char型のサイズを出力
    Print("Size of char: ", sizeof(char));  // char型のサイズをバイト単位で表示します
}

このコードは、sizeof演算子を使って基本データ型のサイズを計測し、それをエキスパートログに出力します。sizeof(int)はint型のサイズをバイト単位で返し、それをログに表示します。

同様に、sizeof(double)sizeof(char)はそれぞれdouble型char型のサイズを返し、それをログに表示します。

配列に対するsizeofの使用例

以下のコードは、配列の全体のサイズと配列内の要素数を計算してエキスパートログに出力します。

void OnStart()
{
    // int型の配列を定義
    int array[10];  // 10要素を持つint型の配列を定義します
    
    // 配列全体のサイズを出力
    Print("Size of array: ", sizeof(array));  // 配列全体のサイズをバイト単位で表示します
    
    // 配列の要素数を計算して出力
    Print("Number of elements in array: ", sizeof(array) / sizeof(array[0])); 
// 配列全体のサイズを各要素のサイズで割ることで要素数を計算します
}

このコードは、配列全体のサイズとその配列内の要素数を計算し、エキスパートログに出力します。 sizeof(array)は配列全体のサイズをバイト単位で返し、sizeof(array[0])配列の最初の要素のサイズを返します。この値を用いて、配列要素数を計算します。

構造体に対するsizeofの使用例

以下のコードは、構造体に対するsizeof演算子の使用例です。

// MyStructという構造体を定義
struct MyStruct
{
    int a;  // int型のメンバー
    double b;  // double型のメンバー
    char c;  // char型のメンバー
};

void OnStart()
{
    // MyStruct型のサイズを出力
    Print("Size of MyStruct: ", sizeof(MyStruct));  // MyStruct型のサイズをバイト単位で表示します
}

このコードは、MyStructという構造体のサイズを計測し、それをエキスパートログに出力します。sizeof(MyStruct)は、構造体MyStructのサイズをバイト単位で返し、それをログに表示します。

バイナリファイル操作における使用例

このコードは、バイナリファイルにデータを書き込む際に、データのサイズを指定するためにsizeofを使用しています。

void OnStart()
{
    // 書き込むデータを定義
    int data = 12345;  // 書き込む整数データ
    
    // バイナリモードでファイルを開く
    int file_handle = FileOpen("test.dat", FILE_WRITE | FILE_BIN);  // バイナリモードでファイルを開く
    if(file_handle != INVALID_HANDLE)
    {
        // ファイルにデータを書き込む
        FileWriteInteger(file_handle, data, sizeof(data));  // データのサイズを指定してファイルに書き込む
        
        // ファイルを閉じる
        FileClose(file_handle);  // ファイルを閉じる
    }
}

このコードは、バイナリモードでファイルを開き、データを書き込みます。sizeof(data)は、書き込むデータのサイズを計算し、これをファイル書き込み関数に渡します。

コメント

タイトルとURLをコピーしました