Prikaz jedne poruke
Stara 7.4.2012, 22:43   #2
Geomaster
V.I.P. Programiranje
 
Član od: 28.6.2007.
Lokacija: Beograd
Poruke: 2.342
Zahvalnice: 2.836
Zahvaljeno 1.047 puta na 507 poruka
Slanje poruke preko MSN-a korisniku Geomaster Slanje poruke preko Skypea korisniku Geomaster
Određen forumom Re: Funkcije u windows.h biblioeci...

Jeste da je matora tema, ali odgovoriću svejedno, ako još nisi naleteo na odgovor ili ako nekog drugog bude interesovalo.
Funkcije ne samo u Windows API-ju već u gomili drugih API-ja imaju ovakav način da se vrate neki rezultati. Međutim, naravno, programeri koji su dizajnirali ovaj API su predvideli da ti podaci koji se vraćaju neće uvek biti korisni, odnosno nekog korisnika ne bi uvek zanimali. Iz tog razloga je uglavnom nepisano pravilo da se, ako se u nekom parametru koji bi trebao da služi za izlaz, prosledi nulti pokazivač (odnosno &(DWORD(0) iliti NULL, a u novom C++11 nullptr) tada se ti podaci ni ne vraćaju. NULL je uvek zagarantovan da ne pokazuje na validnu memorijsku lokaciju pa je idealan kandidat za takav placeholder.
Dakle, ako funkciju pozoveš kao FillConsoleOutputCharacter(Izlaz, 'A', 1, (COORD){1, 1}, NULL), tada se ovaj parametar gde je NULL neće ni uzimati u obzir. Da je funkcija stvarno pokušala da upiše na memorijsku adresu koju si joj prosledio, dogodio bi se grozan segfault.
Geomaster je offline   Odgovor sa citatom ove poruke