Jawaban:
Elemen x[1][1+5] bisa direferensikan menggunakan pointer:
*(*(x + 1) + 1+5)
Jadi, untuk mencetaknya, bisa menggunakan sintaks:
cout << *(*(x + 1) + 1+5);
Penjelasan:
Akses Array Menggunakan Pointer (C/C++)
Jika x adalah array 1 dimensi:
x[i] = *(x+ i) <---- elemen x pada kolom ke-i
Jika x adalah array 2 dimensi:
x[i][j] = *(*(x + i) + j) <---- elemen x pada baris ke-i kolom ke-j
Dalam pertanyaan, yang diminta adalah mencetak x[1][1+5]. Sebenarnya ini sia-sia, mengapa nomor kolom ditentukan 1+5. Karena kita tahu bahwa 1+5=6.
x[1][1+5] merujuk elemen x pada baris ke-2 dan kolom ke-7, karena dalam C/C++ indeks dimulai dari 0, bukan 1.
Di bawah ini saya lampirkan kode program contoh pengaksesan elemen array menggunakan pointer. Semoga bisa membantu memahaminya.
Didefinisikan array 2 dimensi bernama x, dengan ukuran dimensi 10 baris dan 20 kolom. Array x diinisialisasi dengan integer sebagai berikut:
1 2 3 4 5 6 7 ... 19 20
21 22 23 24 25 26 27 ... 39 40
...
181 182 183 184 185 186 187 ... 199 200
#include <iostream>
using namespace std;
int main() {
int x[10][20];
// hanya untuk inisialisasi saja
for (int i=0; i<10; i++) {
for (int j=0; j<20; j++) {
x[i][j] = i*20+j+1;
}
}
cout << "x[1][1+5] adalah " << *(*(x + 1) + 1+5) << endl;
cout << "x[1][6] adalah " << *(*(x + 1) + 6) << endl;
cout << "x[baris terakhir][kolom terakhir] adalah " << *(*(x + 9) + 19) << endl;
cout << "Elemen array x pada baris ke-5 adalah\n";
for (int j=0; j<20; j++) {
cout << *(*(x + 4) + j) << " ";
}
cout << endl;
return 0;
}
Hasil eksekusinya:
x[1][1+5] adalah 27
x[1][6] adalah 27
x[baris terakhir][kolom terakhir] adalah 200
Elemen array x pada baris ke-5 adalah
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
[answer.2.content]