Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pada programcic kada koristim pokazivac

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pada programcic kada koristim pokazivac

[ Pregleda: 1484 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Pada programcic kada koristim pokazivac07.04.2013. u 14:48 - pre 133 meseci
Code:
#include <iostream>
using namespace std;

struct datum{
       int dan;
       };

struct kandidat{
       char ime[10];
       datum *polozeni[10];   //datum polozeni[10]; -radi
       };
       
int main(){
    kandidat ja;
    kandidat *pok=new kandidat[5];
    cout<<"ime: ";
    cin>>pok[0].ime;
    cout<<"\ndn: ";
    cin>>pok[0].polozeni[0]->dan; //cin>>pok[0].polozeni.dan; -radi
   
       
    cout<<"\nIME: "<<pok[0].ime;
    cout<<pok[0].polozeni[0]->dan; //pok[0].polozeni[0].dan; -radi
    
    char q; cin>>q; return 0;}


Program radi ok(bez pokazivača), ali zašto ne radi s pokazivačima?
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
212.178.244.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Pada programcic kada koristim pokazivac07.04.2013. u 15:03 - pre 133 meseci
Zato što nisi alocirao datum objekte na koje pokazuju elementi niza polozeni:

Code:

struct kandidat{
       char ime[10];
       datum *polozeni[10];   //datum polozeni[10]; -radi
      
       kandidat(){
             for(int i = 0; i != 10; i++)
                 polozeni[i] = new datum();
       }

       ~kandidat(){
             for(int i = 0; i != 10; i++)
                 delete polozeni[i];
       }
};
       
 
Odgovor na temu

azzpoz

Član broj: 300637
Poruke: 96



+1 Profil

icon Re: Pada programcic kada koristim pokazivac07.04.2013. u 15:31 - pre 133 meseci
Citat:
Burgos:
Zato što nisi alocirao datum objekte na koje pokazuju elementi niza polozeni:

Code:

struct kandidat{
       char ime[10];
       datum *polozeni[10];   //datum polozeni[10]; -radi
      
       kandidat(){
             for(int i = 0; i != 10; i++)
                 polozeni[i] = new datum();
       }

       ~kandidat(){
             for(int i = 0; i != 10; i++)
                 delete polozeni[i];
       }
};
       





Kada bih htio prilikom dodavanja novog datuma, kao npr.
int brojac=0;
niz[0].polozeni[brojac]=new datum;
++brojac;
~~~~~nekoliko novih alokacija koje se ne vezuju za polozene~~~~
niz[0].polozeni[brojac]=new datum;

Da li će biti memorijski prostor pokazivaču polozeni[1] biti dodjeljen tačno poslije polozeni[0]?

Koja je razlika u alokaciji new datum(); s i bez zagrade new datum;
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
212.178.244.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Pada programcic kada koristim pokazivac07.04.2013. u 16:12 - pre 133 meseci
Citat:
Da li će biti memorijski prostor pokazivaču polozeni[1] biti dodjeljen tačno poslije polozeni[0]?


Pokazivači polozeni[0] i polozeni[1] će biti jedan do drugog u memoriji, ali to ne mora da znači za objekte na koje pokazuju.

Citat:
Koja je razlika u alokaciji new datum(); s i bez zagrade new datum;


U ovom slučaju (klasa ili struktura bez konstruktora, destruktora ili virtuelnih funkcija članica), varijanta sa zagradama će postaviti članove datum strukture na nulu, dok bez zagrada ne garantuje isto (verovatno ostavlja neinicijalizovane). U slučaju ako praviš objekat neke klase koja ima konstruktore, destruktore ili virt. članice, nema razlike.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pada programcic kada koristim pokazivac

[ Pregleda: 1484 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.