On Thu, 19 Oct 2000, Agus Budy Wuysang wrote:

> > artinya compiler akan menyediakan suatu tempat dimemori (dan tidak ada
>                                                                ^^^^^^^^^
> > jaminan bahwa lokasinya dapat ditulisi) yang berisi string tersebut, lalu
>   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Ah, saya sendiri baru tahu... ini berarti
> 
> ptrString[0] = 'x';
> 
> bisa saja gagal pada C compiler tertentu?

gagal dalam arti mengakses memori yang tidak boleh diakses.
Dengan gcc, hasilnya 'segmentation fault' di Turbo C (di dos) 
mungkin tidak apa-apa (karena sistem operasinya tidak membatasi 
suatu program untuk tidak menulis/membaca alamat memori tertentu.

> He he maklum C memang sedikit reserve wordnya tapi banyak
> aturannya.
> 
> Belum lagi standard K&R/Trad C != ANSI C != C++
> 
> gcc -Wall, -traditional & g++ saja tidak memberi
> warning apa2...

ya memang option diatas tidak memberi warning.
tapi jika Anda memakai option : -Wwrite-strings akan muncul warning
--------------------------------
[yohanes@merapi yohanes]$ cat dd.c
main(){
char * ptrString;
ptrString="1234567890";
ptrString[0]='z';
return puts (ptrString);
}
[yohanes@merapi yohanes]$ cc -Wwrite-strings dd.c
dd.c: In function `main':
dd.c:3: warning: assignment discards `const' from pointer target type
---------------------------------------

ketika saya compile program diatas hasil assembly-nya :

......
.section        .rodata
.LC0:
        .string "1234567890"
.text
        .align 4
.....

gcc  meletakkan string tersebut di section .rodata yang artinya
lokasi hanya baca.

-- 
Salam
Yohanes

SMS Mail : [EMAIL PROTECTED]
http://langitbiru.hypermart.net


--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]

Kirim email ke