void *

Pre-requisite: Ngerti apa itu pointer pada C.

Pernah gak di saat ngoding (dengan bahasa C) kamu butuh suatu variabel yang mungkin bisa jadi apa saja? Misalnya, variabel itu mungkin jadi integer, char, array, string, list of list, atau bahkan list of list of list, dan sebagainya di mana kita belum tahu apa tipenya saat didefinisikan. Kalau pernah, mungkin trik di bawah ini bisa membantu :)

Di C ada sesuatu yang namanya: void *, yang merupakan pointer ke sesuatu yang belum didefinisikan. Nah, karena void * ini menunjuk ke sesuatu yang belum didefinisikan, maka kita bisa membuat si void * ini menunjuk ke sesuatu yang bisa kita definisikan sesuka kita. Bagaimana caranya? Mungkin program kecil di bawah ini bisa membantu :)

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
// the mistery of void *
void * P;

// void * casted to char *
P = (char*) malloc (sizeof(char));
*(char*)P = 'A';
printf("P = %c\n",*(char*)P);
free(P);

// void * casted to int **
P = (int**) malloc (2 * sizeof(int*));
((int**)P)[0] = (int*) malloc (sizeof(int));
((int**)P)[1] = (int*) malloc (sizeof(int));
*((int**)P)[0] = 1;
*((int**)P)[1] = 2;
printf("P[0] = %d\n",*((int**)P)[0]);
printf("P[1] = %d\n",*((int**)P)[1]);
free(P[0]); free(P[1]); free(P);

// void * casted to float ***
P = (float***) malloc (sizeof(float**));
((float***)P)[0] = (float **) malloc (sizeof(float*));
((float***)P)[0][0] = (float *) malloc (sizeof(float));
*((float***)P)[0][0] = 1.23;
printf("P[0][0] = %f\n",*((float***)P)[0][0]);
free(P[0][0]); free(P[0]); free(P);

return 0;
}

Sebagaimana yang kita tahu (or at least, yang gue tau :P), fungsi malloc merupakan fungsi yang mengembalikan void *. Dengan menggunakan trik casting hasil malloc seperti pada contoh di atas (menambahkan (tipe_tujuan) di depan malloc), kita bisa mendapatkan tipe apapun yang kita mau pada variabel void * kita.

Lalu, jika kamu ingin mengakses atau meng-assign variabel void * itu, jangan lupa lakukan casting, dengan menambahkan (tipe_tujuan) di depan variable void *.

Oke, sekarang silakan mencoba ^_^. Semoga menjawab kebutuhan kamu. Happy coding!

Cosplay Temu Akrab

Minggu lalu, 25 November 2007, diadakan acara Temu Keakraban (Mukrab) Informatika ITB. FYI, mukrab merupakan acara tahunan mahasiswa IF ITB yang bertujuan untuk mengakrabkan seluruh mahasiswa.


Mukrab tahun ini mungkin merupakan mukrab terakhir yang diikuti oleh mahasiswa IF angkatan 2004. Karena itu, wajar saja kalau kami tampil pol-polan di mukrab kemarin. Rasanya senang sekali bisa menjadi bagian dari IF2004 ^_^.


Seperti pada mukrab-mukrab sebelumnya, tiap angkatan wajib membawakan sebuah persembahan angkatan. Tahun ini, kami membuat kabaret yang berisi parodi film plus nostalgia masa muda plus tari-tarian. Pokoknya keren abis lah!!


Cerita berawal dari 4 anak kecil bermain Jumanji, lalu satu per satu mereka terlempar ke suatu scene dengan misi yang berbeda-beda.


Setelah semua misi terpenuhi, muncullah video nostalgia IF 2004 ditambah aksi boyband + cheerleaders. Lalu, ditutup dengan finishing dance "We Go Together". What an amazing moment!!


Nah trus, di mana letak cosplay-nya?? Nih dia para artis dari scene Avatar !!


Zamak


Abie


Indri


Tyo


Tania


Ahmy


Stepz


Sebenarnya masih ada beberapa artis lagi dari scene Avatar tapi tidak ditampilkan *termasuk effect-man :p*. Hal ini dikarenakan keterbatasan stok foto yang saya dapatkan.


Scene berikutnya yang cosplay-nya cukup menarik mungkin 300 vs Pirates :). *secara gue ada di scene ini :p hehehe...* Ini dia artis-artis dari scene Pirates... ^_^


Anne


Anggri B-)


Reyhan


Hm... sebenarnya ada satu tokoh lagi di kubu Pirates yang memerankan Elizabeth Swan :) .. *pasangan main saya di cuplikan "will you marry me?" ... ada videonya gak ya? >_<* Tapi, saya rasa gak perlu ditampilin di blog ini deh. Gak tega euy! Bisa merusak image kordas :P hehehe.


Oya, ini musuh utama Pirates di scene ini, king of Sparta... :)


Simon


Huehehe.. lucu kan, cosplay IF2004 gak cuma sampai di sini loh.


Masih banyak kostum-kostum menarik di scene lainnya. Ada yang jadi tokoh-tokoh Heroes (Peter Petrelli, Isaac Mendez, Hiro Nakamura, Matt Parkman, dll), Darth Vader (Star Wars), John Travolta, Michael Jackson, bahkan sampai ke tokoh-tokoh lokal seperti Trio Warkop (Dono, Kasino, Indro) dan Suzanna si Ratu Ular :).


Sayangnya, saya gak bisa mendapatkan foto-foto tokoh dan pemain yang berkoresponden :(. *kalau ada yang punya, kasi ke gw yak.. ntar gw publish deh :D*.


Hm... sebagai bonus, ini saya tampilkan para pemain di scene 300 vs Pirates ^_^


IF 2004 @ Temu Akrab 2007


NB: Kredit spesial saya sampaikan buat tim kreatif pembuat kostum & asesoris lainnya. Dan buat IF2004, luv u all... ^_~