Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

malloc pitanje (objasnjenje gradiva)
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
C. Smith
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 06. 2006. (21:29:33)
Postovi: (5)16
Spol: muško
Sarma = la pohva - posuda
-1 = 0 - 1

PostPostano: 21:34 čet, 15. 6. 2006    Naslov: malloc pitanje Citirajte i odgovorite

Koja je razlika između ovog

p = (int*) malloc(sizeof(int));

i ovog

p = malloc(sizeof(int));

cemu sluzi (int*) i dali je slučajno da mi program radi i bez njega?
Koja je razlika između ovog

p = (int*) malloc(sizeof(int));

i ovog

p = malloc(sizeof(int));

cemu sluzi (int*) i dali je slučajno da mi program radi i bez njega?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
goranm
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 11. 2002. (20:09:12)
Postovi: (906)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
218 = 249 - 31

PostPostano: 21:37 čet, 15. 6. 2006    Naslov: Citirajte i odgovorite

Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto.
Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto.



_________________
The Dude Abides
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
C. Smith
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 06. 2006. (21:29:33)
Postovi: (5)16
Spol: muško
Sarma = la pohva - posuda
-1 = 0 - 1

PostPostano: 21:45 čet, 15. 6. 2006    Naslov: Citirajte i odgovorite

Hvala puno!

Čuo sam priče kako je ovaj forum dobro posjećen , ali ovo je nevjerojatno.
Postavim pitanje, odem stavit avatara (cca 30 sec) već je 6 ljudi pogledalo pitanje i imam jedan odgovor, ludnica!
Hvala puno!

Čuo sam priče kako je ovaj forum dobro posjećen , ali ovo je nevjerojatno.
Postavim pitanje, odem stavit avatara (cca 30 sec) već je 6 ljudi pogledalo pitanje i imam jedan odgovor, ludnica!


[Vrh]
Korisnički profil Pošaljite privatnu poruku
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 15:07 pet, 16. 6. 2006    Naslov: Citirajte i odgovorite

[quote="goranm"]Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto.[/quote]
Konverzija iz [tt]void[/tt] pointera u bilo koji drugi pointerski tip se po standardu mora odvijati implicitno, tako da ce svaki pristojni kompajler to raditi kako treba.

Dobro je pisati eksplicitnu konverziju kod poziva funkcije [tt]malloc[/tt], jer se na taj nacin postize veca citljivost koda.
goranm (napisa):
Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto.

Konverzija iz void pointera u bilo koji drugi pointerski tip se po standardu mora odvijati implicitno, tako da ce svaki pristojni kompajler to raditi kako treba.

Dobro je pisati eksplicitnu konverziju kod poziva funkcije malloc, jer se na taj nacin postize veca citljivost koda.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
HijenA
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 23. 01. 2004. (16:46:04)
Postovi: (3D2)16
Spol: muško
Sarma = la pohva - posuda
-26 = 44 - 70
Lokacija: Prazan skup ;-)

PostPostano: 12:38 sub, 17. 6. 2006    Naslov: Citirajte i odgovorite

[quote="mdoko"][quote="goranm"]Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto.[/quote]
Konverzija iz [tt]void[/tt] pointera u bilo koji drugi pointerski tip se po standardu mora odvijati implicitno, tako da ce svaki pristojni kompajler to raditi kako treba.[/quote]

Dev-CPP koristi gcc kompajler i on normalno javlja gresku (kriva konverzija). mislim da je dobro goranm rekao, ovisi od kompajlera do kompajlera.
mdoko (napisa):
goranm (napisa):
Ako se dobro sjećam vježbi, malloc vraća void pointer, a kompajler ga automatski konvertira u tip od p, a preporučljivo je raditi (int*) jer ne rade svi kompajleri isto.

Konverzija iz void pointera u bilo koji drugi pointerski tip se po standardu mora odvijati implicitno, tako da ce svaki pristojni kompajler to raditi kako treba.


Dev-CPP koristi gcc kompajler i on normalno javlja gresku (kriva konverzija). mislim da je dobro goranm rekao, ovisi od kompajlera do kompajlera.



_________________
Chuck Norris can divide by zero.

I bow before you Veliki Limun, on je kiseo i zut Bow to the left

[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 12:44 sub, 17. 6. 2006    Naslov: Citirajte i odgovorite

[quote="HijenA"]
Dev-CPP koristi gcc kompajler i on normalno javlja gresku (kriva konverzija). mislim da je dobro goranm rekao, ovisi od kompajlera do kompajlera.[/quote]
Nece javiti gresku ako kompajliras file s ekstenzijom [tt].c[/tt], jer se onda poziva C kompajler tj. [tt]gcc[/tt], ali ukoliko se kompajlira file s ekstenzijom [tt].cpp[/tt], onda se poziva C++ kompajler tj. [tt]g++[/tt] koji ce javiti gresku jer, za razliku od C standarda, C++ standard ne dozvoljava implicitnu konverziju iz [tt]void*[/tt] u neki drugi pointerski tip.

Primjer: imamo dva filea [tt]proba.c[/tt] i [tt]proba.cpp[/tt], koji oba izgledaju ovako:
[code:1]
int main(){
void* p1;
int* p2;
p2=p1;
return 0;
}
[/code:1]
Poziv C kompajlera:
[code:1]
> gcc proba.c
[/code:1]
uredno prolazi, a u slucaju poziva C++ kompajlera dobivamo:
[code:1]
> g++ proba.cpp
proba.cpp: In function `int main()':
proba.cpp:4: error: invalid conversion from `void*' to `int*'
[/code:1]

Da ne bi ispalo da se radi o crnoj magiji, evo i verzije kompajlera:
[code:1]
> gcc --version
gcc (GCC) 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

> g++ --version
g++ (GCC) 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[/code:1]

[size=5]Edit: dodan primjer[/size]
HijenA (napisa):

Dev-CPP koristi gcc kompajler i on normalno javlja gresku (kriva konverzija). mislim da je dobro goranm rekao, ovisi od kompajlera do kompajlera.

Nece javiti gresku ako kompajliras file s ekstenzijom .c, jer se onda poziva C kompajler tj. gcc, ali ukoliko se kompajlira file s ekstenzijom .cpp, onda se poziva C++ kompajler tj. g++ koji ce javiti gresku jer, za razliku od C standarda, C++ standard ne dozvoljava implicitnu konverziju iz void* u neki drugi pointerski tip.

Primjer: imamo dva filea proba.c i proba.cpp, koji oba izgledaju ovako:
Kod:

int main(){
        void* p1;
        int* p2;
        p2=p1;
        return 0;
        }

Poziv C kompajlera:
Kod:

> gcc proba.c

uredno prolazi, a u slucaju poziva C++ kompajlera dobivamo:
Kod:

> g++ proba.cpp
proba.cpp: In function `int main()':
proba.cpp:4: error: invalid conversion from `void*' to `int*'


Da ne bi ispalo da se radi o crnoj magiji, evo i verzije kompajlera:
Kod:

> gcc --version
gcc (GCC) 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

> g++ --version
g++ (GCC) 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Edit: dodan primjer



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
HijenA
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 23. 01. 2004. (16:46:04)
Postovi: (3D2)16
Spol: muško
Sarma = la pohva - posuda
-26 = 44 - 70
Lokacija: Prazan skup ;-)

PostPostano: 13:21 sub, 17. 6. 2006    Naslov: Citirajte i odgovorite

nda...meni je Dev-CPP javio gresku u kompajliranju bez obzira na ekstenziju fajla :-k still, mozda je defaultno da poziva g++ a ne gcc :-?
nda...meni je Dev-CPP javio gresku u kompajliranju bez obzira na ekstenziju fajla Think still, mozda je defaultno da poziva g++ a ne gcc Confused



_________________
Chuck Norris can divide by zero.

I bow before you Veliki Limun, on je kiseo i zut Bow to the left

[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 13:27 sub, 17. 6. 2006    Naslov: Citirajte i odgovorite

[quote="HijenA"]nda...meni je Dev-CPP javio gresku u kompajliranju bez obzira na ekstenziju fajla :-k still, mozda je defaultno da poziva g++ a ne gcc :-?[/quote]
Cudno. Ne koristim Dev-C++, ali ono malo sto sam prckao po tome zakljucio sam da se ponasa tako da poziva odgovarajuci kompajler ovisno o ekstenziji, a ukoliko kreiras novi file i ne upises ekstenziju prilikom imenovanja filea, onda ce Dev postaviti defaultnu ekstenziju [tt].cpp[/tt].
HijenA (napisa):
nda...meni je Dev-CPP javio gresku u kompajliranju bez obzira na ekstenziju fajla Think still, mozda je defaultno da poziva g++ a ne gcc Confused

Cudno. Ne koristim Dev-C++, ali ono malo sto sam prckao po tome zakljucio sam da se ponasa tako da poziva odgovarajuci kompajler ovisno o ekstenziji, a ukoliko kreiras novi file i ne upises ekstenziju prilikom imenovanja filea, onda ce Dev postaviti defaultnu ekstenziju .cpp.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan