Inisialisasi Array Pointer dalam C
Hai sana, bakat coding masa depan! Hari ini, kita akan melihat dunia menarik array pointer dalam C. Jangan khawatir jika Anda baru dalam programming - saya akan memandu Anda langkah demi langkah, seperti yang telah saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Jadi, ambil secangkir minuman kesukaan Anda, dan mari kita mulai perjalanan menarik ini bersama!
Cara Inisialisasi Array Pointer dalam C?
Sebelum kita masuk ke rahasia inisialisasi array pointer, mari kita ingat kembali apa itu pointer. Bayangkan pointer sebagai papan tanda yang menunjuk ke lokasi di memori komputer Anda. Sekarang, ketika kita membicarakan array pointer, bayangkan baris papan tanda, masing-masing menunjuk ke lokasi yang berbeda.
Mari kita mulai dengan contoh sederhana:
int *ptr_array[5];
Baris ini mendeklarasikan array 5 pointer integer. Tetapi tunggu! Kita hanya membuat papan tanda disini, bukan data yang benar-benar ditunjuknya. Itu seperti menempatkan papan tanda kosong di kota baru - mereka ada, tapi belum menunjuk ke tempat yang berguna belum.
Untuk membuat array pointer kita benar-benar berguna, kita perlu menginisialisasinya. Berikut cara kita bisa melakukannya:
int a = 10, b = 20, c = 30, d = 40, e = 50;
int *ptr_array[5] = {&a, &b, &c, &d, &e};
Dalam contoh ini, kita membuat lima variabel integer dan kemudian menginisialisasi array pointer agar menunjuk ke variabel ini. Itu seperti kita akhirnya menulis tujuan pada papan tanda kita!
Inisialisasi Array Pointer Menggunakan Kata Kunci static
Sekarang, mari bicarakan kata kunci static
. Dalam C, static
adalah seperti kata ajaib yang menjaga variabel hidup sepanjang masa hidup program Anda. Ketika kita menggunakan static
dengan array pointer kita, itu memastikan bahwa array hanya diinisialisasi sekali dan nilaiannya tetap antara panggilan fungsi.
Berikut contohnya:
static int *ptr_array[3] = {NULL, NULL, NULL};
Ini membuat array statis tiga pointer integer, semua awalnya menunjuk ke NULL. Itu seperti menempatkan tiga papan tanda permanen di kota kita, tapi kita belum memutuskan tempat mana mereka harus menunjuk.
Inisialisasi Array Pointer Integer
Mari kita lebih praktis. Anggaplah kita ingin membuat array pointer, masing-masing menunjuk ke integer yang berbeda. Berikut cara kita bisa melakukannya:
int num1 = 10, num2 = 20, num3 = 30;
int *int_ptr_array[3] = {&num1, &num2, &num3};
for (int i = 0; i < 3; i++) {
printf("Value at int_ptr_array[%d]: %d\n", i, *int_ptr_array[i]);
}
Dalam kode ini, kita membuat tiga integer dan array pointer yang menunjuk ke integer ini. Kemudian, kita menggunakan loop for
untuk mencetak nilai-nilai ini. Itu seperti kita membuat tiga papan tanda di kota kita, masing-masing menunjuk ke rumah dengan nomor yang berbeda, dan kemudian kita mengambil tur untuk membaca semua nomor rumah!
Inisialisasi Array Pointer denganAlamat Langsung
kadang-kadang, kita mungkin ingin menginisialisasi array pointer dengan alamat memori langsung. Meskipun ini kurang umum, itu baik untuk mengetahui cara kerjanya:
int *direct_addr_array[3] = {(int*)100, (int*)200, (int*)300};
for (int i = 0; i < 3; i++) {
printf("Address in direct_addr_array[%d]: %p\n", i, (void*)direct_addr_array[i]);
}
Di sini, kita menginisialisasi array dengan alamat memori spesifik. Itu seperti kita menempatkan papan tanda untuk menunjuk ke koordinat GPS spesifik di kota kita. Namun, hati-hati dengan pendekatan ini - menunjuk ke alamat memori sembarang bisa berbahaya jika Anda tidak tahu apa yang Anda lakukan!
Penelusuran Array denganAlamat Dasar
Sekarang, mari kita belajar trik menarik. Kita bisa menggunakan aritmetik pointer untuk menelusuri array hanya menggunakan alamat dasarnya. Berikut cara nya:
int numbers[5] = {10, 20, 30, 40, 50};
int *base_ptr = numbers; // base_ptr sekarang menunjuk ke elemen pertama numbers
for (int i = 0; i < 5; i++) {
printf("Value at index %d: %d\n", i, *(base_ptr + i));
}
Dalam contoh ini, base_ptr
menunjuk ke elemen pertama array numbers
. Dengan menambahkan i
ke base_ptr
, kita dapat mengakses setiap elemen array. Itu seperti memiliki papan tanda magis yang dapat menunjuk ke setiap rumah di kota kita hanya dengan memberitahu berapa langkah yang harus diambil!
Inisialisasi Array Pointer Karakter (String)
Arrays karakter pointer sering digunakan untuk menyimpan string dalam C. Berikut contohnya:
char *fruits[] = {"Apple", "Banana", "Cherry", "Date", "Elderberry"};
for (int i = 0; i < 5; i++) {
printf("Fruit %d: %s\n", i+1, fruits[i]);
}
Dalam kode ini, kita membuat array karakter pointer, masing-masing menunjuk ke string literal. Itu seperti kita menempatkan papan tanda di pasar petani kota kita, masing-masing menunjuk ke tempat berbeda untuk buah!
Inisialisasi Array Pointer Dinamis
Akhirnya, mari bicarakan alokasi dinamis array pointer. Ini sangat berguna ketika kita tidak tahu ukuran array kita pada saat kompilasi:
int n = 3; // Kita bisa mengubah nilai ini di runtime
int **dynamic_ptr_array = (int**)malloc(n * sizeof(int*));
for (int i = 0; i < n; i++) {
dynamic_ptr_array[i] = (int*)malloc(sizeof(int));
*dynamic_ptr_array[i] = i * 10;
}
for (int i = 0; i < n; i++) {
printf("Value at dynamic_ptr_array[%d]: %d\n", i, *dynamic_ptr_array[i]);
}
// Jangan lupa untuk membebaskan memori yang dialokasikan!
for (int i = 0; i < n; i++) {
free(dynamic_ptr_array[i]);
}
free(dynamic_ptr_array);
Ini seperti membangun lingkungan baru di kota kita sesuai permintaan. Kita pertama-tama membuat papan tanda (dynamic_ptr_array
), kemudian untuk setiap papan tanda, kita bangun rumah (malloc(sizeof(int))
) dan masukkan nomor ke dalamnya (i * 10
). Setelah kita selesai menggunakan lingkungan kita, kita pastikan untuk membersihkan memori yang dialokasikan.
Dan itu dia, teman-teman! Kita telah berpergian melalui negeri array pointer dalam C. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba konsep ini. Selamat coding!
Credits: Image by storyset