Andy wrote:
>
> On Thu, Oct 19, 2000 at 11:08:22AM +0700, Agus Budy Wuysang wrote:
> >
> > si andy tidak memakai konstruk "coba++" jadi kalam konteksnya
> > tak ada beda... note: local char pointer ie. &strz != &coba
> >
> > while (++*strz) stop saat *strz = '\0' (strlen(strz) = 9) i=0...8
> ^^^^^-> weh bisa gini to ?
Ooops maksudnya -> while(*++strz)
> sekalian nambah tanya, kalo di definisikan
> char * ptrString;
>
> ptrString="1234567890";
> puts (ptrString);
>
> apakah berbahaya bagi sistem operasi, karena ptrString tidak di alokasi dulu
>memory-nya
> dengan malloc?
Tidak berbahaya, karena statement itu valid;
Tambahan: dalam teori seberapa buggy pun program yang dibuat,
multiuser unixish OS tidak boleh crash karena user (uid != 0)
space prog.
Kembali ke masalah C pointers:
Mungkin anda membingungkannya konsep pointer vs array...
char *p;
char a[5+1];
p = "12345" -> oke tanpa alloc karena "12345" adalah
string constant yang sudah dialokasikan
a = "12345" -> invalid karena a bukan pointer biasa tapi
array of char (static pointer)
strcpy (p, "12345") -> not ok tanpa *alloc, karena belum
ada tempat buat 7 char baru
strcpy (a, "12345") -> ok karena ca sudah dialokasi
p = strdup("12345") -> ok karena strdup ~= malloc + strcpy
a = strdup("12345") -> invalid (seperti di atas)
(*(++p)) { ... } -> ok
(*(++a)) { ... } -> not ok
(*(++(&p[0]))) { .... } -> not ok
(a[++i]) { ... } -> ok
(p[++i]) { ... } -> ok
sekarang coba periksa output dari prog ini:
#include <stdio.h>
int main(void)
{
char *p;
char c = 'c';
putchar(c);
printf(" %p %p %p\n", &p, p, &c);
*cp = c;
c = 'b';
putchar(c)
putchar(*p);
putchar(p[0]);
printf(" %p %p %p\n", &p, p, &c);
cp = &c;
c = 'x'
putchar(c);
putchar(*p);
putchar(*(&p[0]));
printf(" %p %p %p\n", &p, p, &c);
}
Kalau sudah mengerti coba mainkan tipe var nya eg int atau struct
--
+---| Netscape Communicator 4.x |---| Powered by Linux 2.2.x |---+
|/v\ Agus Budy Wuysang MIS Department |
| | Phone: +62-21-344-1316 ext 317 GSM: +62-816-1972-051 |
+--------| http://www.rad.net.id/users/personal/s/supes |--------+
--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]