/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Pointer til en struct
Fra : Panduro


Dato : 08-12-05 11:01

Hej Ng.



Jeg har et lille problem med en Pointer til en struct.



struct Template {

struct Template const *NextMenu;

};




extern struct Template const MenuA;



struct Template const *PointerMenuA[] ={&MenuA,0};



struct Template const MenuA = {PointerMenuA[0]};




I mit array "*PointerMenu" har jeg alle mine adresser på alle mine menuer,
der kan jo være flere menuer end den ene.

Jeg vil gerne kunne få adressen på "MenuA" ved at tilgå min struct "MenuA",
men det kan ikke lade sig gøre, jeg havde tænkt noget i den stil, jeg ved
godt at det ikke er rigtigt, så jeg håber der er nogle der kan hjælpe.



void main()

{

struct Template const *Pointer;



Pointer = &MenuA.NextMenu; // det er her den er
gal.

}



På forhånd mange tak..



 
 
Ivan Johansen (08-12-2005)
Kommentar
Fra : Ivan Johansen


Dato : 08-12-05 12:38

Panduro wrote:
> void main()
> {
> struct Template const *Pointer;
> Pointer = &MenuA.NextMenu; // det er her den er
> gal.
> }

NextMenu er i forvejen en pointer, så prøv med:
Pointer = MenuA.NextMenu;


Ivan Johansen

Panduro (08-12-2005)
Kommentar
Fra : Panduro


Dato : 08-12-05 16:17

Ivan Johansen wrote:
> NextMenu er i forvejen en pointer, så prøv med:
> Pointer = MenuA.NextMenu;

Det er prøvet, men får en syntax error.



Panduro (08-12-2005)
Kommentar
Fra : Panduro


Dato : 08-12-05 16:24


> Det er prøvet, men får en syntax error.
Det var en fejl glem alt om syntax fejl.....

Det der sker er at Pointer får adressen på "PointerMenuA" og ikke indholdet
at arrayet som og så er en adresse.



Ivan Johansen (08-12-2005)
Kommentar
Fra : Ivan Johansen


Dato : 08-12-05 18:35

Panduro wrote:
> Det der sker er at Pointer får adressen på "PointerMenuA" og ikke indholdet
> at arrayet som og så er en adresse.

Nej, den kode du har postet vil få Pointer til at pege på MenuA.
Adressen på PointerMenuA har typen Template const** og kan derfor ikke
lægges over i Pointer som har typen Template const*.

Ivan Johansen

Panduro (08-12-2005)
Kommentar
Fra : Panduro


Dato : 08-12-05 19:02

øh?!?!?!

** kender jeg ikke så meget til, er der et godt sted man kan få lide viden
omkring dem c'.)

Har du nogle forslag, når jeg ændrer Pointer til typen Template const** er
det stadig adressen på PointerMenuA der
flyttes over i PointerMenuA

> Panduro wrote:
>> Det der sker er at Pointer får adressen på "PointerMenuA" og ikke
>> indholdet at arrayet som og så er en adresse.
>
> Nej, den kode du har postet vil få Pointer til at pege på MenuA. Adressen
> på PointerMenuA har typen Template const** og kan derfor ikke lægges over
> i Pointer som har typen Template const*.
>
> Ivan Johansen



Panduro (08-12-2005)
Kommentar
Fra : Panduro


Dato : 08-12-05 19:36

Hvis jeg gør sådan, får jeg den rigtige Adresse.

Pointer = PointerMenuA[0];

"Panduro" <xx@xx.xx> skrev i en meddelelse
news:4398752a$0$145$edfadb0f@dread16.news.tele.dk...
> øh?!?!?!
>
> ** kender jeg ikke så meget til, er der et godt sted man kan få lide viden
> omkring dem c'.)
>
> Har du nogle forslag, når jeg ændrer Pointer til typen Template const** er
> det stadig adressen på PointerMenuA der
> flyttes over i PointerMenuA
>
>> Panduro wrote:
>>> Det der sker er at Pointer får adressen på "PointerMenuA" og ikke
>>> indholdet at arrayet som og så er en adresse.
>>
>> Nej, den kode du har postet vil få Pointer til at pege på MenuA. Adressen
>> på PointerMenuA har typen Template const** og kan derfor ikke lægges over
>> i Pointer som har typen Template const*.
>>
>> Ivan Johansen
>
>



Ivan Johansen (08-12-2005)
Kommentar
Fra : Ivan Johansen


Dato : 08-12-05 22:06

Panduro wrote:
> Hvis jeg gør sådan, får jeg den rigtige Adresse.
>
> Pointer = PointerMenuA[0];

Jeg er pludselig kommet i tvivl om dette er gyldigt i C:
struct Template const MenuA = {PointerMenuA[0]};

Jeg tror kun det er gyldigt i C++, mens du i C ikke kan indeksere ind i
et array ved initialisering af en global variabel eller konstant. Jeg
ved ikke om det er grunden til dit problem, men du kan prøve at
initialisere MenuA direkte:
struct Template const MenuA = {&MenuA};

For øvrigt skal main() returnere int og ikke void.

Ivan Johansen

Mads Bahrt (09-12-2005)
Kommentar
Fra : Mads Bahrt


Dato : 09-12-05 00:32

Panduro wrote:
> øh?!?!?!
>
> ** kender jeg ikke så meget til, er der et godt sted man kan få lide viden
> omkring dem c'.)
>
> Har du nogle forslag, når jeg ændrer Pointer til typen Template const** er
> det stadig adressen på PointerMenuA der
> flyttes over i PointerMenuA

** er ganske enkelt en pointer til en pointer. Du kan lave et vilkårligt
antal indirektioner såsom *** og *****, men det er sjældent nødvendigt
med mere end to niveauer pointere.

MVH
Mads

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste