dari contoh kode yg anda tulis, memang hanya buang2x waktu saja. penggunaan pointer amat penting bila menyangkut pengiriman variabel sbg parameter dari suatu fungsi, bila parameter merupakan tipe data primitif (char, short, int, long, float, double), anda mungkin tdk memerlukan pointer namun bila variabel yg digunakan sbg parameter fungsi berupa struct (terutama yg berukuran besar), pointer 'harus' digunakan karena bila tidak menggunakan pointer, copy dari variabel tsb akan dibuat dan hal ini tentu akan menghabiskan memory dan memperlambat waktu
Kebanyakan compiler sekarang, terutama yang calling-convention-nya menggunakan register (bukan stack seperti x86), biasanya passing struct secara otomatis akan mengirimkan alamatnya.
pointer juga bisa digunakan utk hal2x keren (???), misalnya mengganti nilai dari suatu variabel bertipe const
const digunakan dengan tujuan agar nilai variable tidak diubah. Penggunaan pointer untuk mengakses nilai variable const akan menyebabkan masalah, terutama apabila variable const ini terletak di read-only segment (eg. text-segment).
#include <stdio.h> int main (void) { const long int a = 0x1234abcd; printf("%lx\n", a); /* dereference pointer */ ((unsigned char *)&a)[0] = 0xff; ((unsigned char *)&a)[1] = 0xee; printf("%lx\n", a); return(0); }
Code ini akan bermasalah untuk processor yang endian-nya berbeda. Contoh yang cocok mungkin adalah penggunaan memory map register. Biasanya, hardware memiliki sejumlah register yang harus diakses di memory tertentu. Untuk mengakses struktur ini, kita harus menggunakan pointer. eg. struct regs_t{ uint32_t version; uint32_t control; }; regs_t* regs = (regs_t*) 0xA0000000; printf("%0x%08x\n", regs->version); printf("%0x%08x\n", regs->control); KOkon. -- Berhenti langganan: [EMAIL PROTECTED] Arsip dan info: http://linux.or.id/milis