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]

Kirim email ke