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!
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