My Little Daemon™

Simple, C ProgrammingAugust 26, 2007 3:49 pm

C memberikan suatu fasilitas untuk keperluan pembuatan nama tipe data baru, tetapi saya lebih senang menyebutnya pembuatan tipe data alias. Fasilitas ini dikenal sebagai typedef. typedef kemungkinan besar kependekan dari type definition. Berikut adalah bentuk umum deklarasinya :

typedef tipe_data_asli tipe_data_alias;

tipe_data_alias merupakan sinonim dari tipe_data_asli. Baiklah ini adalah contohnya :

typedef int bulat;

bulat adalah tipe data alias dari int (integer). Hal yang serupa :

typedef char *String;

membuat String adalah sebuah sinonim dari char * atau character pointer.

File typedef.c

#include <stdio.h>

typedef int bulat;

main()
{
   bulat x;

   x=2;
   printf(”%d\n”, x);
}

$ gcc -o typedef typedef.c
$ ./typedef
2
$

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Middle, C Programming 8:23 am

Pointer banyak dilibatkan dalam program C. Misalnya untuk melewatkan string dari suatu fungsi ke fungsi yang lain. Penerapan pointer yang paling umum yaitu untuk menciptakan variabel dinamis, yang memungkinkan untuk memakai memori bebas (memori yang belum dipakai) selama eksekusi program.

Pointer Menunjuk Obyek Lain — Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain. Pada kenyataan yang sebenarnya, variabel pointer (atau disingkat menjadi pointer saja) berisi alamat dari suatu obyek lain (yaitu obyek yang dikatakan ‘ditunjuk’ oleh pointer). Sebagai contoh, px adalah pointer dan x adalah variabel yang ditunjuk oleh px. Apabila x berada pada alamat memori (alamat awal) 1000, maka px akan berisi 10000. 

Mengatur Pointer agar Menunjuk ke Variabel yang Lain – Agar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari suatu variabel, operator & (operator alamat, yang bersifat unary) dapat dipergunakan dengan menempatkan operator ini di depan nama variabel. Sebagai contoh, apabila x dideklarasikan sebagai variabel bertipe integer, maka &x berarti ‘alamat dari variabel x‘. Adapun contoh pemberian alamat ke suatu variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk pada data bertipe integer) adalah seperti berikut ini :

px = &x

Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel x. Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x.

Mengakses Isi Suatu Variabel Melalui Pointer – Apabila suatu variabel sudah ditunjuk oleh pointer maka variabel itu dapat diakses melalui variabel itu sendiri ataupun melalui pointer. Pengaksesan dengan pointer dilakukan dengan menggunakan operator indirection berupa simbol asterik ‘*‘ yang bersifat unary. Contoh : *px yang menyatakan ‘isi atau nilai variabel/data yang ditunjuk oleh pointer px‘. Jika y bertipe integer, maka sesudah dua statement berikut :

px = &x;
y = *px;

y akan berisi nilai yang sesuai dengan nilai x. Untuk lebih jelasnya perhatikan contoh berikut :

#include <stdio.h>

main(){
int x,y;
int *px;

x = 99;

px = &x;
y = *px; 

printf(”Isi x = %d\n”, x);
printf(”Alamat x = %p\n”, &x);
printf(”Isi px = %p\n”,px);
printf(”Isi yang ditunjuk oleh px = %d\n”, *px);
printf(”Isi y = %d\n”, y);
}

$ gcc -o pointerlanjut pointerlanjut.c
$ ./pointerlanjut
Isi x = 99
Alamat x = 0xbfbfecf4
Isi px = 0xbfbfecf4
Isi yang ditunjuk oleh px = 99
Isi y = 99
$

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa

Middle, C Programming 8:16 am

Pointer merupakan suatu variabel yang menyimpan alamat dari suatu data dan bukan menyimpan datanya sendiri. Pointer dideklarasikan dengan menggunakan tanda asterik “*” di depan nama variabelnya :

 

File pointer1.c

#include <stdio.h>

main(){
int a, *b;
a = 25;
b = &a;
printf(”Pointer b menunjukkan alamat = %p\n”, b);
printf(”Alamat tersebut berisi nilai = %d\n”, *b);
}

$ gcc -o pointer1 pointer1.c
$ ./pointer1
Pointer b menunjukkan alamat = 0xbfbfecf4
Alamat tersebut berisi nilai = 25
$

Operator & digunakan untuk mengambil alamat dari suatu data. Format %p merupakan format fungsi printf() untuk pointer. Pada contoh ini, variabel a diisi dengan integer 25 yang kemudian nilai ini disimpan pada suatu alamat di memori. Alamat tersebut selanjutnya di-assign-kan (diisikan) ke pointer b dengan menggunakan operator &. Dengan demikian sekarang pointer b berisi alamat dari nilai 25 yaitu 0xbfbfecf4. Untuk menampilkan kembali nilai 25 yang ada pada operator b dapat dilakukan dengan perintah *b dengan format specifier %d dan bukan %p. Pointer dapat juga (dan sering) digunakan untuk tipe string :

File pointer2.c

#include <stdio.h>

main(){
char *x;
x = “Hello, world !”;
printf(”%s\n”, x);
}

$ ./pointer2
Hello, world !
$

Dedicated for Light Intermutimedia
Perusahaan Software Pulsa