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

Kirim email ke