[C++/C] 配列

### 配列の要素を出力

int main() {
    
    int test[5];

    test[0] = 80;
    test[1] = 60;
    test[2] = 22;
    test[3] = 50;
    test[4] = 75;
    
    for(int i=0; i<5; i++) {
        cout << i+1 << "番目の人の点数は" << test[i] << "です。\n";
    }

    return 0; 
}

### キーボードから入力

int main() {
    
    const int num = 5;
    int test[num];

    cout << num << "人の点数を入力してください。\n";
    for(int i=0; i<num; i++) {
        cin >> test[i];
    }
    
    for(int j=0; j<num; j++) {
        cout << j+1 << "番目の人の点数は" << test[j] << "です。\n";
    }

    return 0; 
}

### 配列の要素をソートする

int main() {
    
    const int num = 5;
    int test[num];

    cout << num << "人の点数を入力してください。\n";
    for(int i=0; i<num; i++) {
        cin >> test[i];
    }

    for(int s=0; s<num-1; s++) {
        for(int t=s+1; t<num; t++) {
            if(test[t] > test[s]){
                int tmp = test[t];
                test[t] = test[s];
                test[s] = tmp;
            }
        }
    }
    
    for(int j=0; j<num; j++) {
        cout << j+1 << "番目の人の点数は" << test[j] << "です。\n";
    }

    return 0; 
}

### 多次元配列

int main() {
    
    const int sub = 2;
    const int num = 5;

    int test[sub][num];

    test[0][0] = 80;
    test[0][1] = 60;
    test[0][2] = 22;
    test[0][3] = 50;
    test[0][4] = 75;
    test[1][0] = 90;
    test[1][1] = 55;
    test[1][2] = 68;
    test[1][3] = 72;
    test[1][4] = 58;
    
    for(int i=0; i<num; i++) {
        cout << i+1 << "番目の人の国語の点数は" << test[0][i] << "です。\n";
        cout << i+1 << "番目の人の算数の点数は" << test[1][i] << "です。\n";
    }

### 配列とポインタ
配列のアドレス
&test[0]
&test[1]

配列名を記載しただけで、先頭要素のアドレスを表す
test

int main() {
    
    int test[5] = {80, 60, 55, 22, 75};

    cout << "test[0]の値は" << test[0] << "です。\n";
    cout << "test[0]のアドレスは" << &test[0] << "です。\n";
    cout << "testの値は" << test << "です。\n";
    cout << "つまり*testの値は" << *test << "です。\n";

    return 0; 
}

$ g++ -o sample sample.cpp && ./sample
test[0]の値は80です。
test[0]のアドレスは0xfffff9b40360です。
testの値は0xfffff9b40360です。
つまり*testの値は80です。

*testは配列の先頭要素の値となる。

### ポインタの演算

int main() {
    
    int test[5] = {80, 60, 55, 22, 75};

    cout << "test[0]の値は" << test[0] << "です。\n";
    cout << "test[0]のアドレスは" << &test[0] << "です。\n";
    cout << "testの値は" << test << "です。\n";
    cout << "test+1の値は" << test+1 << "です。\n";
    cout << "*(test+1)の値は" << *(test+1) << "です。\n";

    return 0; 
}

$ g++ -o sample sample.cpp && ./sample
test[0]の値は80です。
test[0]のアドレスは0xffffe4e0e070です。
testの値は0xffffe4e0e070です。
test+1の値は0xffffe4e0e074です。
*(test+1)の値は60です。