Prikaz jedne poruke
Stara 27.9.2015, 10:44   #5
Teva
Starosedelac
 
Član od: 23.2.2006.
Lokacija: Tamo gde su kuće od čokolade i prozori od marmelade....
Poruke: 1.579
Zahvalnice: 195
Zahvaljeno 301 puta na 171 poruka
Određen forumom Re: Pitanje iz C++ u Visual Studio?

U prevodu, scanf prima adresu gde će smestiti podatke...

Dal ćeš koristiti operator referenciranja (&) ili ćeš proslediti direktno pokazivač (što je opet adresa u memoriji) je apsolutno svejedno, dok god scanf dobije adresu.

Problem nastaje ako imaš int n = 5; (obično neki junk ili 0, al nek bude 5).

scanf("%d", n); je validan poziv i neće se buniti kompajler.

Zašto?

Jer je pokazivač u principu celobrojna vrednost sa brojem "ćelije" u memoriji. I taj poziv će na memorijsku lokaciju br 5 da upiše šta god pročita. Problem je jer će se desiti nedefinisano ponašanje, možda pukne, usled neuspešnog upisa a možda upiše 5icu tamo gde ne bi trebao. Uglavnom sevne segmentation ali nije nemoguće da ti prođe i napravi kuršlus kasnije.


Stim što kada koristiš pokazivače, pazi dobro šta radiš, priroda im je takva da mogu da ti proizvedu ogromnu glavobolju vrlo lagano
Teva je offline   Odgovor sa citatom ove poruke