Blog information

  • Category: Kuliah

  • Posted By: AglaBridgeMedia

  • Post date: 22 Apr 2020

  • Keywords: materi informatika hubungan pointer dengan array dasar pemrograman, hubungan pointer dengan array string fungsi pointer lain, hubungan pointer dengan array, pointer bahasa c

  • Views: 1985

Hubungan Pointer dengan Array, String, Fungsi dan Pointer Lain

Pada materi sebelumnya tentang pointer (baca disini) telah dijelaskan apa, bagaimana, dan contoh program dari pointer. Pada artikel kali ini akan membahas materi lanjutan dari pointer, yaitu hubungan antara pointer dengan array, string, fungsi dan juga dengan pointer lain. Simak uraiannya berikut ini ya teman-teman.

  • Hubungan Pointer dan Array

Array secara internal sebenarnya diterjemahkan dalam bentuk pointer. Begitu juga pada bahasa C. Sehingga hubungan keduanya begitu dekat dan erat. Untuk memudahkan dalam memahami, akan saya berikan contoh sederhananya.

#include 

void main(){
    static int tanggal_lahir[3] = {01, 01, 1999};
    int *pointer_tgl;

    // memberi nilai ke variabel pointer_tgl
    pointer_tgl = tanggal_lahir;
    // atau
    // pointer_tgl = &tanggal_lahir[0];

    printf("Nilai dari tanggal_lahir[0]: %d\n", tanggal_lahir[0]);
    printf("Nilai yang ditunjuk oleh variabel pointer_tgl: %d\n", *pointer_tgl);
}

Pada kode yang dicetak tebal di atas diberikan variabel tanggal_lahir berupa array dengan tipe data char. Kemudian variabel pointer_tgl adalah variabel pointer. Variabel pointer_tgl akan menunjuk pada variabel tanggal_lahir. Bentuk penulisan seperti ini: pointer_tgl = tanggal_lahir memiliki arti bahwa variabel pointer_tgl akan memiliki nilai elemen pertama dari variabel array tanggal_lahir. Sama halnya jika dituliskan seperti ini: pointer_tgl = &tanggal_lahir[0]. Maka apabila kode di atas dijalankan akan menghasilkan seperti gambar berikut.


Apabila ingin memberikan output semua nilai dari elemen array, maka kode programnya akan menjadi seperti berikut.

#include 

void main(){
    static int tanggal_lahir[3] = {01, 01, 1999};
    int *pointer_tgl, i;

    // memberi nilai ke variabel pointer_tgl
    pointer_tgl = tanggal_lahir;

    printf("Nilai yang ditunjuk oleh variabel pointer_tgl: %d\n", *pointer_tgl);
    for(i=0; i<3; i++){
        //printf("Nilai dari tanggal_lahir[%d]: %d\n", i, *(pointer_tgl+i)); atau bisa juga
        printf("Nilai dari tanggal_lahir[%d]: %d\n", i, *pointer_tgl++);
    }
}
Poin dari kode di atas adalah pada baris yang dicetak tebal, yaitu menampilkan semua data elemen array dengan pointer. Sehingga outputnya akan seperti berikut.


  • Hubungan Pointer dan String

Karena string pada dasarnya juga adalah array dengan dimensi satu, maka hubungan antara pointer dan string juga sangat erat. Sebagai contoh diberikan kode program berikut ini.

#include 

void main(){
    char *pointer_kota = "PURWODADI";

    printf("String yang ditunjuk oleh pointer_kota: %s\n", pointer_kota);
}
Pada baris kode yang dicetak tebal, akan memberikan perintah kepada compiler untuk mengalokasikan variabel pointer_kota sebagai variabel pointer yang menunjuk objek bertipe data string dengan nilai konstanta "PURWODADI" dalam memory komputer. Kemudian pointer pointer_kota akan menunjuk pada alamat string "PURWODADI". Bentuk lain dari kode program yang dicetak tebal di atas bisa juga dituis dengan char kota[] = "PURWODADI". Namun kedua penulisan ini memiliki perbedaan, yaitu pointer_kota adalah pointer yang menunjuk alamat string, jika terdapat string lain maka dapat dengan mudah diarahkan ke string lain tersebut. Sedangkan kota[] adalah string yang menyatakan array dengan nilai konstan (tidak dapat diubah) "PURWODADI". Perhatikan contoh progam di bawah ini.
#include 
#include 

void main(){
    char *kota1= "GROBOGAN";
    char *kota2= "SEMARANG";
    char *kotax;

    printf("Data Awal: \n");
    printf("\tKota1: %s\n", kota1);
    printf("\tKota2: %s\n", kota2);

    kotax = kota1;
    kota1 = kota2;
    kota2 = kotax;

    printf("Data Sekarang: \n");
    printf("\tKota1: %s\n", kota1);
    printf("\tKota2: %s\n", kota2);
}
Pada baris kode yang dicetak tebal di atas menunjukkan kalau terjadi pertukaran data. Mula-mula kota1 berisi data string "GROBOGAN" dan kota2 berisi data string "SEMARANG". Kemudian ditukar dimana kotax = kota1, kota1 = kota2 dan kota2 = kotax sehingga setelah dilakukan pertukaran data akan menghasilkan output seperti gambar berikut.


  • Hubungan Pointer dan Pointer Lain

Suatu pointer juga bisa menunjuk ke pointer lain. Sebagai contoh akan diberikan deklarasi variabel seperti berikut.

int x = 123;
int *pointer1;
int **pointer2;
Keterangan:

  • variabel x merupakan variabel dengan tipe data int.
  • variabel pointer1 merupakan variabel pointer yang menunjuk variabel dengan tipe data int, dalam kasus ini menunjuk ke variabel x. Agar pointer1 menunjuk ke variabel x, diberikan perintah pointer1 = &x;
  • variabel pointer2 merupakan variabel pointer yang menunjuk ke variabel pointer lain dengan tipe data int, dalam hal ini menunjuk ke variabel pointer1. Agar pointer2 menunjuk ke variabel ponter1, maka diberikan perintah pointer2 = &pointer1;

Untuk lebih jelasnya, silakan simak kode program berikut ini.

#include 

void main(){
    int x = 123;
    int *pointer1;
    int **pointer2;

    pointer1 = &x;
    pointer2 = &pointer1;

    printf("Nilai dari pointer1: %d\n", *pointer1);
    printf("Nilai dari pointer2: %d\n", **pointer2);
}
Bagaimana dengan hasilnya? Silakan teman-teman coba dengan tools masing-masing ya.

  • Array dari Pointer

Satu array juga bisa digunakan sebagai penampung beberapa pointer. Sebagai contoh diberikan deklarasi nama kota sebagai berikut.

char *kota[5];
Array dari kota terdiri dari 5 buah elemen berupa pointer yang menunjuk ke data bertipe char. Array pointer juga bisa diinisialisasikan pada saat pendeklarasian variabelnya. Sebagai contoh.

#include 

void main(){
    char *kota[5] = { "GROBOGAN", "SEMARANG", "KUDUS", "DEMAK", "PATI" };
    int i;

    for(i=0; i<5; i++){
        printf("Kota dengan indeks ke %d adalah: %s\n", i, kota[i]);
    }
}

Hasilnya bagaimana? Silakan teman-teman coba di tools masing-masing ya.

  • Hubungan Pointer dan Fungsi

Hubungan pointer dengan fungsi juga erat, karena pointer juga bisa digunakan sebagai parameter pada fungsi (bisa juga prosedur), dan juga sebagai nilai kembalian atau return value dari sebuah fungsi. Berikut contoh kode program pointer sebagai parameter suatu fungsi.

#include 

void tambah_nilai(int *, int *);

void tambah_nilai(int *a, int *b){
    *a = *a+1;
    *b = *b+2;
}

void main(){
    int a = 4, b = 6;

    printf("Data Awal:\n");
    printf("\tNilai A: %d\n", a);
    printf("\tNilai B: %d\n", b);

    tambah_nilai(&a, &b);

    printf("Data Sekarang:\n");
    printf("\tNilai A: %d\n", a);
    printf("\tNilai B: %d\n", b);
}
Pada kode yang dicetak tebal di atas memiliki arti bahwa nilai dari variabel pointer a akan ditambahkan dengan 1, dan variabel pointer b akan ditambahkan dengan 2. Penulisan parameter pointer untuk fungsi yaitu diawali dengan tipe data kemudian tanda bintang (*) dan diikuti nama variabel pointernya. Silakan cermati cara penulisan pointer sebagai parameter di kode program di atas ya teman-teman. Dan terakhir berikut saya sertakan contoh kode program pointer sebagai return value suatu fungsi.

#include 

char *hari(int);

char *hari(int a){
    char *nama_hari[] = { "Kode Hari Tidak Dikenal", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu" };
    return ((a < 1 || a > 7) ? nama_hari[0] : nama_hari[a]);
}

void main(){
    printf("Hari Ini : %s\n", hari(3));

}
Pada kode program di atas ditulisakan nama fungsinya dengan didahului tanda bintang (*) kemudian dengan parameter berupa int. Adapun nama variabel pointer nama_hari juga diikuti dengan tanda bintang (*) yang menunjukkan sebagai variabel pointer. Kemudian return valuenya berupa nama hari sesuai dengan indeks elemen yang dituju, dalam contoh di atas adalah indeks ke 3, sehingga menampilkan nama hari Rabu.

Demikian materi lanjutan dari pointer, semoga bermanfaat dan bisa menambah wawasan serta pemahaman teman-teman sekalian. Untuk lebih memahami lagi, silakan teman-teman mencoba kode program yang sudah saya tuliskan di atas, tentunya dengan modifikasi dan percobaan kasus teman-teman ya. Tetap semangat menuntut ilmu. Happy Coding ^_^





blog comments powered by Disqus