Belajar Bahasa C 14# : Pengenalan Pointer

Dalam pemrograman bahasa C, Pointer adalah tipe data yang digunakan untuk mengakses dan menyimpan alamat memory secara langsung. Pointer akan mengambil dan menyimpan alamat memori dari suatu variabel. Pada bahasa C, pointer dilambangkan dengan simbol ‘*’.

Setiap variabel memiliki alamat memori, fungsinya untuk menentukan lokasi penyimpanan data pada memori (RAM). Alamat memori ini disebut reference atau referensi. Alamat atau address ini berupa angka angka acak (random) dari sebuah variabel. Itulah kenapa memori di sebut sebagai RAM (Random Access Memory).

Cara Membuat Pointer Pada Bahasa C

Pointer dibuat dengan menambahkan simbol * di depan namanya, lalu kita harus mengambil alamat memori dari variabel yang lain menggunakan simbol &. Silahkan perhatikan gambar dibawah ini.

pointer pada bahasa c

Pada gambar ini, kita membuat pointer dengan nama ”*c”. Pointer ini akan mengambil alamat dari variabel a, sehingga isi alamat memori dari pointernya sama dengan variabel ”a” yaitu 61fe14. Jadi, bisa juga dibilang bahwa pointer ini merupakan variabel yang berisi alamat dari variabel lain.

Contoh program bahasa C pointer :

#include <stdio.h>

int main(){
    int a = 14;
    int b = 12;

    // membuat pointer dengan isi alamat memori dari a
    int *c = &a;

    // print nilai variabel dan alamat memori
    printf("Nilai variabel a : %d\n", a);
    printf("Nilai variabel b : %d\n", b);
    printf("Nilai variabel *c : %d\n", *c);

    printf("Alamat variabel a : %x \n", &a);
    printf("Alamat variabel b : %x \n", &b);
    printf("Alamat variabel *c : %x \n", c);

    return 0;
}

Keterangan :

Variabel ”a” memiliki nilai 14 dan ”b” memiliki nilai 12. Sedangkan variabel *c pada awalnya tidak memiliki sebuah nilai.

Lalu variabel *c mengambil alamat dari variabel ”a” dengan cara *c = &a;

Ketika alamat alamat telah diambil maka variabel *c memiliki nilai yang sama dengan variabel ”a”.

Hasilnya :

pointer pada bahasa c

Selain itu, Kita juga dapat mengubah nilai dari pointernya jadi seperti ini :

*c = 15;

Contoh program bahasa C pointer :

#include <stdio.h>

int main(){
    int a = 14;
    int b = 12;
    int *c = &a;

    printf("Nilai variabel a : %d\n", a);
    printf("Nilai variabel b : %d\n", b);
    printf("Nilai variabel *c : %d\n", *c);

    printf("Alamat variabel a : %x \n", &a);
    printf("Alamat variabel b : %x \n", &b);
    printf("Alamat variabel *c : %x \n", c);
    printf("\n");

    *c = 15;
    printf("Nilai variabel *c : %d\n", *c);
    printf("Alamat variabel *c : %x \n", &c,*c);

    return 0;
}

Hasilnya :

Pointer untuk Pass by Reference

Pass by reference atau pemanggilan dengan reference merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi. Cara ini berguna untuk untuk mengubah isi suatu variabel yang berada di luar fungsi, lalu kita akan merubahnya di dalam fungsi.

Contoh program :

#include <stdio.h>

void add_value(int *value){
    *value = *value + 2;
    printf("Nilai di diganti : %d\n", *value);
}

void main(){
    int value = 0;

    printf("Nilai awal : %d\n", value);
    add_value(&value);
    add_value(&value);
    printf("Nilai akhir : %d\n", value);
}

Keterangan :

Pada kode program diatas, kita membuat fungsi dengan nama add_value() dan terdapat variabel dengan tipe data integer dengan nama ”value”. Nilai pada variabel ”value” ini nantinya akan ditambah sebanyak dua.

Di baris 9, Variabel value diberikan nilai 0. Variabel ini berada diluar fungsi yaitu fungsi main(). Di baris 11-14, kita mencoba mengubah nilai variabelnya didalam fungsi add_value() dan memanggilnya dengan alamat memori.

Karena argumen fungsi add_value() kita ubah menjadi pointer, maka kita harus memberikan alamat memori saat memanggilnya. Setiap kali fungsi add_ value () dipanggil, maka nilai variabel akan bertambah 2.

Mengakses Data pada Array dengan Pointer

Array dapat diterjemahkan ke dalam bentuk pointer secara internal. Oleh sebab itu, hubungan array dengan pointer ini cukup erat mengingat pointer ini sering digunakan programer untuk mengakses data pada array.

Contoh program bahasa C pointer untuk mengakses data array :

#include <stdio.h>

int main() {
    printf("======== Program Antrian =========\n\n");
    int data[10] = {1, 2, 3, 4, 5}, i;
    int *ptr_data;

    // menggunakan pointer
    ptr_data = data ;

    for(i = 0; i < 5; ++i) {
        printf("Antrian ke : %d\n", *ptr_data);
        printf("--- Tekan Enter untuk Next ----\n");
        getchar();
        ptr_data++;
    }
    printf("Selesai");
}

Pada kode program di atas terdapat sebuah array bertipe integer yang menampung 5 elemen (data) dan sebuah pointer (ptr_data). Kemudian pointer ptr_data digunakan untuk mengakses element array dimulai indeks pertama. Di bagian perulangan, dilakukan increment ptr_ data ++, sehingga pointer ini akan mereferensi ke elemen data array selanjutnya.

Hasilnya :

pointer pada bahasa c

Begitulah pembahasan mengenai pointer pada bahasa C, untuk selanjutnya kita akan mengulas tentang alokasi memori. Terima kasih, semoga bermanfaat ..

Tinggalkan Balasan

Scroll to Top