[LUGOS-PROG] kaj pomeni 'const char *p'
Rok Papež
rok.papez at lugos.si
Mon Feb 24 11:23:13 CET 2003
Zivjo Jure!
Dne ponedeljek 24. februar 2003 02:13 je Jure Pecar napisal(a):
> const char *p;
>
> v teku programcka je prva stvar, ki se s tem pointerjem zgodi, tole:
>
> *p = *q;
Ce p ni inicializiran lahko kazhe kamorkoli. Z *p ga dereferencirash in torej
naredish dostop do pomnilnika na "nakljucni" naslov.
SIGSEGV as it should be :->.
No pa poglejmo kaj prevajalnik izpljune:
---------------------------------------------
[rok at Strader rok]$ cat /etc/redhat-release
Red Hat Linux release 7.3 (Valhalla)
[rok at Strader tmp]$ gcc 1.c -Wall -g
1.c: In function `main':
1.c:8: warning: assignment of read-only location
[rok at Strader tmp]$ ./a.out
Segmentation fault
[rok at Strader tmp]$ cat 1.c
------------------------------
#include <stdio.h>
#include <stdlib.h>
char *str = "1";
const char *q;
int main() {
*q = *str;
printf("%c\n", *q);
return 0;
}
> kar je zanimivo, je da mi na redhat 7.1 to dela b.p., na 7.3. pa pri tej
> priredbi segfaulta. z nekaj printfji sem ugotovil, da je *p NULL. kako to?
Dela ti, ker imash drugachno okolje v katerem se program zazene.. ocitno se
pod 7.1 spremenljivka p inicializira na nek "delujoc" naslov.
--
best regards,
Rok Papež.
More information about the lugos-prog
mailing list