prg-lang-2 / week11 / Exer05.java
Exer05.java
Raw
// 課題05 配列を逆順に
/* //Cプログラム
    #include<stdio.h>
    #define SIZE 5

    int main(void) {
        int src[SIZE] = { 1, 5, 4, 9, 6 };
        int dst[SIZE];

        int i;
        int *psrc = src;
        int *pdst = dst;
        for(i=0;i<SIZE;i++) {
            *(pdst+i) = *(psrc+SIZE-i-1);
        }

        int n;
        printf("dst=[ ");
        for(n = 0; n < SIZE; n++) {
            printf("%d ", dst[n]);
        }
        printf("]\n");

        return 0;
    }
    //実行例
    # ./exer05
    dst=[ 6 9 4 5 1 ]

*/

public class Exer05 {
    public static final int SIZE = 5;

    public static void main(String[] args) {
        int[] src = {1, 5, 4, 9, 6};
        int[] dst = new int[SIZE];

        // Javaでは,ポインタ(間接演算子やアドレス演算子)が使えないので,
        // 配列の添え字を使って,課題を解くことになる
        int i;
        for (i = 0; i < SIZE; i++) {
            dst[i] = src[SIZE - i - 1];
        }
        // i[dst]などもできない.アドレスに触れるような処理は隠蔽され不可能になっている.
        // 隠蔽の理由は,アドレスの誤処理によりプログラムが壊れること等を防ぐため.

        int n;
        System.out.printf("dst=[ ");
        for (n = 0; n < SIZE; n++) {
            System.out.printf("%d ", dst[n]);
        }
        System.out.printf("]\n");
    }
}