On Saturday 12 November 2005 08:11 pm, Arman Idris wrote:
> > #define MY_CALLOC(cnt, type) \
> >        (type *)calloc(cnt, sizeof(type))
>
> ini maksudnya apa?
> terus (type *) ini pointer kan soalnya saya juga baru coba2
> menggunakan pointer dan lagi2 muncul pertanyaan seperti pada kode

itu maksudnya macro... di C/C++ terdapat fasilitas untuk mendefinisikan macro 
yang setahu saya sampai saat ini belum ada di bahasa pemrograman lainnya...

seperti namanya, macro bisa diartikan search & replace atau bisa diartikan 
sebagai inline... anyway... maksudnya... kalo compiler menemukan teks:

MY_CALLOC(x, y)

maka compiler akan melakukan search & replace menjadi:

(y *)calloc(x, sizeof(y))

begitulah maksudnya... jadi tergantung kita memasukkan apa di parameternya...
lebih jelasnya lihat ke manual GCC (entah ada atau tidak... saya tidak ingat) 
atau ke buku2 tentang C/C++

> dibawah ini :
> > int main (int argc, char **argv)
>
> apa maksud dari **argv (2 tanda " * * " ), apakah dengan *argv (satu
> tanda * ) tidak cukup tadi juga saya sudah coba dan dengan **argv dan
> *argv tidak liat ada perbedaan (mungkin karena programnya masih kecil
> kali)
>
> trus ada juga pendeklarasian variable pointer seperti ini :
>
> FILE* nama_file;
>
> apakah sama jika saya buat seperti ini :
>
> FILE *nama_file;
>
> ataukah FILE* menandakan semua variable pada baris tsb bertipe pointer?

saya kasih hint untuk baca di C/C++: bacanya dari belakang!

* artinya pointer, jadi:

FILE *nama_file bisa dibaca:

nama_file adalah pointer menunjuk ke FILE...

dan char **argv bisa dibaca:

argv adalah pointer menunjuk ke pointer menunjuk ke char...

penulisan terserah... bisa pake FILE* nama_file atau FILE *nama_file... 
terserah saudara...

untuk pemula lebih mudah membaca kalu dalam bentuk FILE* nama_file, sehingga 
mengetahui bahwa nama_file adalah pointer menunjuk ke FILE....
tapi para 'expert' lebih menyukai bentuk FILE *nama_file.... mengapa?? sebab 
kalau kita menulis seperti ini:

FILE* a, b;

maka a adalah pointer ke FILE, sedangkan b bukanlah pointer ke FILE, melainkan 
variabel FILE....

sehingga kalau diinginkan b memiliki tipe data yang sama dengan a, maka 
seharusnya ditulis:

FILE* a, * b;

dan lebih mudah menuliskannya:

FILE *a, *b;

sedangkan banyak standar, seperti Qt, menggunakan bentuk:

FILE * a, * b;

begitulah asal mulanya... silahkan dipilih sendiri yang disukai...

oh ya, masalah char **argv, itu bisa diganti dengan char* argv[]... karena 
sebenarnya ** itu sama dengan implementasi array pada C/C++... untuk lebih 
jelasnya coba cari tutorial2 di internet...

Good Luck...

-- 
Danny Kurniawan
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS/CM/E/IT d+() s+:+ a- C++>+++$ UL+++(++)>++++ P!(+++) L+++>++++>$ E-- W++>$
N o-- K- w--(+++) O++@ M@ V? PS PE-@ Y+ PGP@ t++ 5+@ X+++(++) R tv+ b
+++(++) DI? D++@ G+>++ e++ h- r++ y z- 
------END GEEK CODE BLOCK------

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

Kirim email ke