ID (Indonesia) Translation

Halo sana, para bintang pemrograman masa depan! ? Saya sangat senang menjadi panduan Anda dalam perjalanan yang menarik melalui dunia pointer dan array multidimensi dalam C. Sebagai seseorang yang telah mengajarkan pemrograman selama bertahun-tahun, saya dapat menjamin Anda bahwa meskipun konsep ini mungkin terlihat sulit pada awalnya, mereka sebenarnya sangat menarik sekali Anda mengenalinya. mari kita masuk ke dalamnya!

C - Pointers vs. Multi-dimensional Arrays

Pointer dan Array Satu Dimensi

Sebelum kita menangani array multidimensi, mari kita mulai dengan dasar: pointer dan array satu dimensi. Kedua konsep ini sangat terkait dalam C, dan memahami hubungan mereka sangat penting.

Apa Itu Pointer?

Pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Pergunakan sebagai penunjuk yang menunjukkan ke tempat data disimpan dalam memori komputer Anda. Berikut cara kita mendeklarasikan dan menggunakan pointer:

int number = 42;
int *ptr = &number;

printf("Nilai number: %d\n", number);
printf("Alamat number: %p\n", (void*)&number);
printf("Nilai ptr: %p\n", (void*)ptr);
printf("Nilai tempat ptr menunjuk: %d\n", *ptr);

Dalam contoh ini, ptr adalah pointer yang menyimpan alamat number. Operator & memberikan kita alamat variabel, dan operator * (ketika digunakan dengan pointer) memberikan kita nilai di alamat itu.

Array dan Pointer

Sekarang, mari kita lihat bagaimana ini menjadi menarik. Dalam C, nama array sebenarnya adalah pointer ke elemen pertamanya! mari kita lihat ini dalam tindakan:

int arr[5] = {10, 20, 30, 40, 50};
int *p = arr;  // Tidak perlu &, arr sudah menjadi pointer!

printf("Elemen pertama menggunakan notasi array: %d\n", arr[0]);
printf("Elemen pertama menggunakan notasi pointer: %d\n", *p);

// Kita dapat menggunakan aritmetik pointer untuk mengakses elemen lain
printf("Elemen ketiga menggunakan aritmetik pointer: %d\n", *(p + 2));

Apakah itu menarik? Kita dapat menggunakan arr seperti pointer karena, dalam hal ini, itu adalah!

Pointer dan Array Dua Dimensi

Sekarang kita telah menguasai dasar-dasar, mari kita tingkatkan dengan array dua dimensi. Ini seperti tabel atau grid, dengan baris dan kolom.

Mendeklarasikan Array 2D

Berikut cara kita mendeklarasikan dan inisialisasi array 2D:

int matrix[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

Ini menciptakan grid integer 3x4. Tetapi bagaimana ini berhubungan dengan pointer?

Array 2D dan Pointer

Array 2D adalah esensialnya array pointer, di mana setiap pointer menunjuk ke array 1D. mari kita pecahkan ini:

int (*p)[4] = matrix;

printf("Elemen pertama: %d\n", matrix[0][0]);
printf("Elemen yang sama menggunakan pointer: %d\n", **p);

// Mengakses elemen lain
printf("Elemen di baris 1, kolom 2: %d\n", matrix[1][2]);
printf("Elemen yang sama menggunakan pointer: %d\n", *(*(p + 1) + 2));

Dalam contoh ini, p adalah pointer ke array 4 integer. Setiap p + i memberikan kita pointer ke baris, dan kemudian kita dapat mengakses elemen individual dalam baris itu.

Pointer dan Array Tiga Dimensi

Siap untuk bos terakhir? Array tiga dimensi! Ini seperti stack array 2D. Bayangkan kubus yang terbuat dari angka.

Mendeklarasikan Array 3D

Berikut cara kita mendeklarasikan dan inisialisasi array 3D:

int cube[2][3][4] = {
    {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}},
    {{13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24}}
};

Ini menciptakan kubus integer 2x3x4.

Array 3D dan Pointer

Seperti halnya array 2D, kita dapat menggunakan pointer untuk menavigasi array 3D kita:

int (*p)[3][4] = cube;

printf("Elemen pertama: %d\n", cube[0][0][0]);
printf("Elemen yang sama menggunakan pointer: %d\n", ***p);

// Mengakses elemen lain
printf("Elemen di lapisan 1, baris 2, kolom 3: %d\n", cube[1][2][3]);
printf("Elemen yang sama menggunakan pointer: %d\n", *(*(*(p + 1) + 2) + 3));

Di sini, p adalah pointer ke array 3x4 integer. Setiap tingkat * dereferensiasi satu dimensi array.

Penutup

Wah! Kita telah menempuh banyak hal, dari pointer sederhana hingga array 3D. Ingat, kunci untuk menguasai konsep ini adalah latihan. Cobalah menulis kode Anda sendiri, eksperimen dengan ukuran array yang berbeda, dan jangan takut untuk membuat kesalahan - itu adalah bagaimana kita belajar!

Berikut adalah tabel referensi cepat dari notasi pointer yang kita pelajari:

Tipe Array Deklarasi Notasi Pointer
Array 1D int arr[5] int *p = arr
Array 2D int arr[3][4] int (*p)[4] = arr
Array 3D int arr[2][3][4] int (*p)[3][4] = arr

Terus coding, terus eksplorasi, dan ingat - setiap ahli pernah menjadi pemula. Anda bisa ini! ??️

Credits: Image by storyset