--- Eko Hermiyanto <[EMAIL PROTECTED]> wrote:

> Selamat siang,
> 
> Di C ada konsep variable(seperti juga di
> bahasa-bahasa lain). Variable
> tersebut mempunyai nilai yang bersemayam di alamat
> memory tertentu. Kita
> bisa mendapatkan dan memanipulasi nilai variable
> tersebut dengan
> langsung assign nilai baru kepada variable itu.
> 
> Nah, selain cara diatas kita bisa mendapatkan dan
> memanipulasi variable
> dengan pointer. 
> 
> Yang ingin saya tanyakan adalah kalau kita bisa
> memanage variable dengan
> cara assigning variable biasa, kenapa kita harus
> memakai pointer.
> 
> Dibawah ini adalah kode-kode yang memakai pointer:
> #include <stdio.h>
> 
> int calculation(int *firstNumber, int *secondNumber)
> {
>   return(*firstNumber * *secondNumber);
> }
> 
> int main() {
>   int age = 23;
>   int* agex = &age;
>   int ctr;
>   int* ctrx = &ctr;
>   for(*ctrx = 0; *ctrx < 10; *ctrx = *ctrx + 1) {
>     printf("%d\n", *agex);
>     *agex = *agex + 1;
>   }
>   int first = 10;
>   int second = 100;
>   int value = calculation(&first, &second);
>   printf("%d\n", value);
>   return(0);
> }
> 
> Bukankah kode-kode diatas(yang hanya melakukan
> operasi sangat sederhana)
> bisa dengan mudah dah terang kalo tanpa pointer?
> Mohon pencerahannya.
> 
> 
> Thanks,
> Eko Hermiyanto
> 
> 
> -- 
> Berhenti langganan:
> [EMAIL PROTECTED]
> Arsip dan info: http://linux.or.id/milis
> 
> 

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

typedef struct {
  char   iniliah;
  int    itulah;
  float  beginilah;
  double begitulah;
} koleksi;

/* use this function */
void some_func (koleksi *k)
{
  /* do something */
}

/* do not use this function! */
void some_func2 (koleksi k)
{
  /* do something */
}

pointer juga bisa digunakan utk hal2x keren (???),
misalnya mengganti nilai dari suatu variabel
bertipe const

#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);
}

atau dapat digunakan utk melakukan swapping terhadap
berbagai jenis tipe variabel

#include <stdio.h>

void swap (void *a, void *b, int size)
{
  int  cnt = 0;
  char *pa = (char *)a;
  char *pb = (char *)b;

  while (cnt < size) {
    char tmp = pa[cnt];

    pa[cnt] = pb[cnt];
    pb[cnt] = tmp;
    ++cnt;
  }
}

int main (void)
{
  short int s1 = -24, s2 = 1045;
  float     f1 = 0.5134, f2 = 59.52;
  double    d1 = 534.45, d2 = 9.913;

  printf("before swapping\n");
  printf("%d %d\n", s1, s2);
  printf("%f %f\n", f1, f2);
  printf("%f %f\n", d1, d2);
  swap(&s1, &s2, sizeof(s1));
  swap(&f1, &f2, sizeof(f1));
  swap(&d1, &d2, sizeof(d1));
  printf("\nafter swapping\n");
  printf("%d %d\n", s1, s2);
  printf("%f %f\n", f1, f2);
  printf("%f %f\n", d1, d2);

  return(0);
}





       
____________________________________________________________________________________
Get the free Yahoo! toolbar and rest assured with the added security of spyware 
protection.
http://new.toolbar.yahoo.com/toolbar/features/norton/index.php

-- 
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis

Kirim email ke