無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

配列とポインタ

配列の名前は、配列の先頭要素のアドレスを指します。これをポインタ変数に代入し、インクリメントしていくことで、配列の列挙ができます。

#include <iostream>

int main() {
    
    int array[] = { 100, 200, 300 };
    
    // ポインタ変数の宣言
    int *pointer; 
    
    // ポインタ変数に配列の先頭アドレスを代入/アドレス演算子「&」は不要。
    pointer = array;
    
    // ポインタの値の参照。最初のアドレスの値が返される
    std::cout << *pointer << std::endl; // 100
    
    // ポインタをインクリメント。次の配列要素のアドレスに移動する。
    pointer++;
    std::cout << *pointer << std::endl; // 200
    pointer++;
    std::cout << *pointer << std::endl; // 300

    return 0;
}

実行結果です。

100
200
300

関数の引数で配列を渡す

配列のポインタは関数の引数として配列を渡す際にも利用されます。
というか、配列の値渡しはできない、ということですね。Javaと同じ。

#include <iostream>

/**
 * 配列を引数で受け取り、合計値を返す関数。 
 */
int sum( int *array, int size ) {
    int sum = 0;
    for ( int i = 0; i < size; i++ ) { 
        sum += *(array++); // *は++より強いので、本当は()は不要。
    }
    return sum;
}

int main() {
    
    int array[] = { 100, 200, 300 };
    
    // 配列を引数で渡す。
    // 先頭のアドレスだけでは配列の要素数が取れないので呼び出し元で計算し渡す。
    std::cout << sum( array, sizeof array / sizeof array[0]  ) << std::endl; // 600
    
    return 0;
}

実行結果です。

600