17 September 2007

pointer apa array, array apa pointer, apa bedanya

Apa perbedaan 2 kode berikut?
code 1:
char* str1 = "hello, world";
code 2:
char str2[60] = "hello, world";

Kernighan Ritchie di bab 5.3 Pointers and Arrays, C Ansi Programming Languange menyatakan bahwa Pointer adalah variabel, tapi nama array BUKAN.

Sehingga ekspresi str1++ legal, tapi str2++ ILLEGAL. Selanjutnya str1=str2 legal, tapi str2=str1 ILLEGAL.

Kesimpulannya kedua kode tersebut BERBEDA.

Namun demikian :
char x[];
dan
char* x;
adalah kode yang benar-benar sama. Meskipun sama, sebaiknya digunakan char* x untuk menyatakan pointer, ya supaya pembaca tidak berspekulasi bahwa kode char x[] adalah array khusus.

[WARNING!!]
Keterangan diatas belum selesai. Kalau diinisialisasi langsung pada saat deklarasi maka aturan awal char* str1 dan char str2[60] berlaku kembali!
code 4:
char* str1 = "hello, world";
code 5:
char str2[] = "hello, world";

kode nomor 4 adalah pointer, kode nomor 5 adalah array.

Waspadalah.. waspadalah...
Kesalahan bukan pada bahasa C, tapi pada kemalasan anda membaca manualnya.

Tidak ada komentar: