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