Memahami Array dan Pointer dalam C dengan Contoh yang Jelas dan Praktis

Pembaharuan Terakhir: 27/05/2025
penulis: Isaac
  • 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'.

c

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?

penunjuk 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.

  Berikut adalah 6 motherboard gaming terbaik yang akan membantu Anda menang di tahun 2019.

Operasi dasar yang dapat Anda lakukan adalah:

  • Penugasan: int *ptr = array;
  • Dereferensi: *ptr mengembalikan nilai yang terdapat dalam alamat
  • Meningkatkan: ptr++ maju ke item berikutnya
  • Pengurangan: memungkinkan Anda mengetahui jarak antara dua pointer

Array dalam C

susunan 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.

  Cara melihat dan mengubah prioritas aplikasi latar belakang di Windows 10 dan 11

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.