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

Kirim email ke