Compiler tidak melakukan array bound checking pada waktu
suatu function dipanggil.
Lint mungkin bisa, but not compiler.
One explanation, lucky!
char awal[3] menyimpan data-nya di BSS, sedangkan
char akhir[8] di DS, keduanya tidak berhubungan.
Lagipula, seandainya memang kedua-nya ada di segment memory yang sama,
strcpy() akan menambahkan '\0', yang basically menghapus WXZY dari printf()=
.
KOkon.
On 5/3/06, Me Junk <[EMAIL PROTECTED]> wrote:
Program1:
...
char awal[3] = "ABCDE";
char akhir[8] = "WXZY";
int main () {
printf("awal: %s\nakhir: %s\n", awal, akhir);
return (0);
}
Program2:
...
char awal[3];
char akhir[8] = "WXZY";
int main () {
strcpy(awal, "ABCDE");
printf("awal: %s\nakhir: %s\n", awal, akhir);
return (0);
}
Di compile dgn: gcc -Wall -ostr1 str1.c
Mengapa pada program2 gcc tdk memberikan warning dan hasilnya benar?
awal: ABCDE dan bukan ABCWXZY
--
Berhenti langganan: [EMAIL PROTECTED]
Arsip dan info: http://linux.or.id/milis