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:
Posting Komentar