[ Brolly @ 28.12.2007. 18:33 ] @
E ovako.... Radi vezbanja listi, napisao sam program koji vrsi inicijalizaciju liste, unos novih elemenata, brisanje elementa, brisanje cele liste i listanje. Medjutim nisu mi svi delovi koda jasni, posto sam napisao delom samostalno, delom potpomazuci se drugim kodom slicnog zadatka. Dakle prvo, struktura je sledeca:


Code:

typedef struct cvor
{
    char ime[MAX_STRING];
    char prezime[MAX_STRING];
    int indeks;
    struct cvor *sledeci;
}
Tcvor;

Dakle, od informacija unosi se ime, prezime i br indeksa studenta. A onda odmah ispod toga, definisano je:
Code:

typedef Tcvor *Pcvor;

Ispod toga deklarisano je sledece:
Code:

Pcvor glava;

Pitanje br. 1: Da li je Pcvor glava; ekvivalentno sa Tcvor *glava; ?

Ok, dalje:


Ispisuje se meni i preko switch-a se vrsi izbor:
Code:

switch(izbor)
        {
            case 1: inicijalizacija(&glava); break;
            case 2: unos(&glava); break;
            case 3: listanje(&glava); break;
            case 4: brisanje_el(&glava); break;
            case 5: brisanje_liste(&glava); break;
            default: greska=1; break;

2. pitanje: Glava je deklarisana kao pokazivac na tip Tcvor. Zasto ide adresni operator & u pozivu f-ja? Da li bi moglo bez toga, samo npr. inicijalizacija(glava)?

3. Kada se pri dodelama napise *glava, misli se na sadrzaj na koji ona pokazuje? A kad se stavi &? A sta kad se ne stavi nista? Ovo me je oduvek bunilo.
[ Sephiroth? @ 28.12.2007. 19:57 ] @
Prvo, trebao bi jednostavno malo ponoviti gradivo oko pointera… Nisam C programer, tako da ti oko ovih struktura ne mogu puno pomoci bas za ovaj konkretan primjer ...

2: funkcije ti vjerovatno (posto nisi stavio code) kao argumenat primaju pokazivace, a glava ti je staticki elemenat, a ne pokazivac, pa zato moras poslati adresu glave (& simbol) svojoj funkciji da bi ga ona primila kao pokazivac (u argumentu).

3:

- & - adresa varijable
- *pokazivac prikazuje sadrzaj pokazivaca, znaci sadrzaj na koji pokazivac pokazuje
- kad se ne stavi nista, onda se prikazuje adresa na koju pokazivac pokazuje
- kad se stavi &pokazivac onda se dobije adresa POKAZIVACA, a ne sadrzaja
[ Eurora3D Team @ 28.12.2007. 21:32 ] @
Citat:
Pitanje br. 1: Da li je Pcvor glava; ekvivalentno sa Tcvor *glava; ?

Jeste
Npr
Code:

#include <iostream.h>

typedef char CHAR;          // Char tip
typedef CHAR * PSTR;      // Pointer na Char (char *)

int main()
{
    char* ptIme1 = "Ime1";
    PSTR  ptIme2 = "Ime2";
    cout <<  ptIme1 << endl;
    cout <<  ptIme2 << endl;
    return 0;
}

Ostalo je odgovorio @Sephiroth?
Pozdrav