- Array dan pointer memiliki hubungan yang erat dalam bahasa C dan dapat digunakan secara ekuivalen dalam banyak skenario.
- Aritmatika penunjuk memungkinkan Anda melintasi array secara efisien dan fleksibel.
- Pointer sangat penting untuk manipulasi memori tingkat lanjut dan meneruskan parameter dengan referensi.
- String dalam C adalah array karakter yang diakhiri dengan karakter null '\0'.

Jika Anda baru memulai dengan bahasa C atau telah lama memprogram dan masih bingung dengan konsep pointer dan array, Anda tidak sendirian. Kedua elemen dasar C ini kerap menimbulkan keraguan, terutama karena perilakunya tampak serupa, tetapi keduanya memiliki perbedaan utama. Dalam artikel ini kita akan menguraikan konsep-konsep ini secara rinci, dengan penjelasan yang jelas dan contoh sederhana yang akan membantu Anda menguasainya sekali dan untuk selamanya.
Melalui konten ini, Anda akan melihat bagaimana pointer memungkinkan manajemen memori yang lebih fleksibel dan efisien., Anda akan mempelajari cara menggunakan array variabel dan pointer, dan bagaimana semua ini bersatu saat menangani fungsi, string, dan struktur yang lebih kompleks. Semuanya dijelaskan dengan cara yang alami, praktis, dan langsung ke inti permasalahan.
Apa itu pointer dalam C?

Pointer dalam C adalah variabel yang menyimpan alamat memori variabel lain. Alih-alih menyimpan nilai secara langsung, ia menyimpan lokasi tempat nilai itu berada di memori.
Sintaks dasar untuk mendeklarasikan pointer adalah:
int variable;
int *puntero = &variable;
Dimana & adalah operator yang memperoleh alamat memori, dan * Digunakan untuk mengakses (atau membatalkan referensi) isi alamat yang ditunjuk.
Sebagai contoh:
int valor = 10;
int *p = &valor;
printf("%d", *p); // Imprime 10
Ini akan mencetak isi alamat yang disimpan di p, yang merupakan nilai variabel nilai.
Aritmatika penunjuk
Salah satu fitur pointer yang paling hebat adalah kita dapat melakukan operasi aritmatika padanya. hal ini dikarenakan Sebuah pointer menunjuk ke suatu alamat memori, dan penambahan atau pengurangan pada pointer tersebut akan mengubah posisi yang ditunjuknya., dengan mempertimbangkan ukuran tipe data yang ditunjuknya.
int array = {5, 10, 15};
int *ptr = array;
printf("%d", *(ptr + 1)); // Imprime 10
Perilaku ini membuat penelusuran array dengan penunjuk menjadi sangat sederhana dan efisien.
Operasi dasar yang dapat Anda lakukan adalah:
- Penugasan:
int *ptr = array; - Dereferensi:
*ptrmengembalikan nilai yang terdapat dalam alamat - Meningkatkan:
ptr++maju ke item berikutnya - Pengurangan: memungkinkan Anda mengetahui jarak antara dua pointer
Array dalam C
Array dalam C adalah kumpulan elemen bertipe sama yang terletak pada posisi memori berurutan. Saat mendeklarasikan sebuah array sebagai:
int numeros = {1, 2, 3, 4, 5};
Secara internal, elemen-elemen disejajarkan satu demi satu dalam memori. Nama array, seperti Angka, mewakili konstanta yang menunjuk ke alamat elemen pertama. Artinya:
numeros == &numeros
Untuk alasan ini, Dimungkinkan untuk menggunakan pointer untuk mengakses elemen array. Hal ini memungkinkan teknik seperti melintasi array dengan pointer:
int *ptr;
for(ptr = numeros; ptr < numeros + 5; ptr++) {
printf("%d ", *ptr);
}
Yang persis sama seperti melakukannya dengan indeks.
Hubungan antara pointer dan array
Hubungan antara array dan pointer begitu dekat, sehingga keduanya dapat dengan mudah tertukar. Meskipun secara teknis array bukanlah sebuah penunjuk, perilakunya sangat mirip dengan ketika digunakan sebagai parameter pada fungsi, misalnya.
void imprimir(int *arr, int n) {
for(int i = 0; i < n; i++) {
printf("%d ", arr);
}
}
Fungsi ini dapat dipanggil dengan array atau pointer, karena ketika Anda meneruskan array ke suatu fungsi, yang sebenarnya Anda lewati adalah alamat elemen pertamanya.
String karakter dalam C
Dalam bahasa C, String hanyalah sebuah array bertipe char yang diakhiri dengan karakter khusus '\0' (karakter null). Ini menunjukkan akhir rantai.
Sebagai contoh:
char saludo[] = "Hola";
Ini setara dengan:
char saludo[] = {'H', 'o', 'l', 'a', '\0'};
Karakter null ini mengaktifkan fungsi seperti strlen() mengetahui kapan harus berhenti.
Cara umum untuk mendeklarasikan string adalah dengan menggunakan pointer:
char *mensaje = "Mensaje de prueba";
Pendekatan ini perlu diwaspadai, karena string yang ditunjuk mungkin berada dalam segmen memori hanya-baca, sehingga mustahil untuk mengubah isinya.
Penunjuk fungsi
Sesuatu yang lebih maju, tetapi sangat berguna, adalah penggunaan penunjuk fungsi. Dalam C dimungkinkan untuk menyimpan alamat suatu fungsi di dalam pointer dan kemudian memanggilnya melalui pointer tersebut. Hal ini terutama berguna dalam struktur seperti panggilan balik atau algoritma generik.
int suma(int a, int b) {
return a + b;
}
int (*operacion)(int, int);
operacion = suma;
printf("%d", operacion(5, 3)); // Imprime 8
Ini menawarkan fleksibilitas yang hebat dan digunakan secara luas dalam struktur seperti menu interaktif atau struktur berbasis peristiwa.
Deretan penunjuk
Sebuah array pointer tidak lain hanyalah koleksi pointer, dengan kata lain, setiap elemen array adalah penunjuk ke suatu alamat memori.
int a = 1, b = 2, c = 3;
int *arr_punteros;
arr_punteros = &a;
arr_punteros = &b;
arr_punteros = &c;
Dengan demikian, Anda dapat mengakses nilai-nilai seperti:
printf("%d", *arr_punteros); // Imprime 1
Ini sering digunakan untuk bekerja dengan string teks, seperti dalam array string:
char *mensajes[] = {"Hola", "Mundo", "Adiós"};
Dan mengulanginya:
for(int i = 0; i < 3; i++) {
printf("%s\n", mensajes);
}
Menggunakan pointer dalam fungsi
Dalam bahasa C, Fungsi menerima argumennya berdasarkan nilai, yang berarti Anda sedang bekerja dengan sebuah salinan. Jika kita ingin mengubah nilai asli suatu variabel dari suatu fungsi, kita harus memberikan penunjuk ke variabel tersebut.
void cambiar(int *x) {
*x = 100;
}
Menyebutnya seperti ini:
int valor = 50;
cambiar(&valor);
printf("%d", valor); // Imprime 100
Parameter baris perintah
Dalam C, program dapat menerima argumen pada saat runtime. Hal ini dicapai dengan parameter argc y argv[] dalam fungsi main(). Selain itu, Anda dapat memeriksa caranya Gunakan pointer dalam fungsi untuk mengelola argumen dan meningkatkan kode Anda.
int main(int argc, char *argv[]) {
for(int i = 0; i < argc; i++) {
printf("Argumento %d: %s\n", i, argv);
}
}
argumen menunjukkan berapa banyak argumen yang telah disahkan, dan argumen adalah array pointer ke char berisi argumen sebagai string.
Penulis yang bersemangat tentang dunia byte dan teknologi secara umum. Saya suka berbagi ilmu melalui tulisan, dan itulah yang akan saya lakukan di blog ini, menunjukkan kepada Anda semua hal paling menarik tentang gadget, perangkat lunak, perangkat keras, tren teknologi, dan banyak lagi. Tujuan saya adalah membantu Anda menavigasi dunia digital dengan cara yang sederhana dan menghibur.
