Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Zeiger auf Array

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.05.2008, 19:47 Uhr
Fingolin



Hi ,
Also ich möchte innerhalb meines Programmes eine Funktion benutzen,die ein char array ändert.
Da ich kein ganzes array zurückgeben kann,brauche ich (denke ich) einen Pointer. Meine Initialisierung sieht wie folgt aus:

C++:
char Start[Namenslaenge];
    char *pStart=NULL;
    *pStart=&Start;


ja Namenslänge ist eine Variable
der Fehler :

Code:
error C2440: '=': 'char (*__w64 )[20]' kann nicht in 'char' konvertiert werden
        Diese Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat


vielen Dank für eure Antworten.
Mit Freundlichen Grüßen
Fingolin
--
Wenn einer mit Vergnügen zu einer Musik in Reih und Glied marschieren kann, dann hat er sein großes Gehirn nur aus Irrtum bekommen, da für ihn das Rückenmark schon völlig genügen w�rde.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.05.2008, 21:00 Uhr
Fingolin



kann nich editieren aber
Namenslänge ist eine Konstante meine ich.
--
Wenn einer mit Vergnügen zu einer Musik in Reih und Glied marschieren kann, dann hat er sein großes Gehirn nur aus Irrtum bekommen, da für ihn das Rückenmark schon völlig genügen w�rde.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.05.2008, 21:20 Uhr
Hans
Library Walker
(Operator)


Hi,

habe Deine Codezeilen mal kommentiert...

Zitat von Fingolin:

Meine Initialisierung sieht wie folgt aus:

C++:
char Start[Namenslaenge];
    char *pStart=NULL; /* Zeiger definieren, und mit NULL initialisieren */
    *pStart=&Start;  /* Die Adresse von Start nach Adresse NULL kopieren */




bist Du sicher, das Du die Initialisierung so haben willst?
Wenn Du in der 3. Zeile den Zeiger pStart selbst initialisieren willst, muss Du den Stern (*) davor weglassen, also so:

C++:
    pStart=&Start;  /* Die Adresse von Start in den Zeiger pStart kopieren */



Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 23.05.2008 um 21:22 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.05.2008, 11:55 Uhr
Fingolin



Danke Hans
hab es ein wenig umgeschrieben allerdings habe ich den Fehler immernoch nur an einer anderen stelle:

C++:
char     Zielort[Namenslaenge];
char     Startort[Namenslaenge];
char     *pStartpunkt=NULL;
            pStartpunkt=&Startort;
char      *pEndpunkt=NULL;
             pEndpunkt=&Zielort;


Die Fehler:

Code:
error C2440: '=': 'char (*__w64 )[20]' kann nicht in 'char *' konvertiert werden
        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.


Code:
error C2440: '=': 'char (*__w64 )[20]' kann nicht in 'char *' konvertiert werden
        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

Ich bin mir nich so sicher aber,ich glaube,das kommt daher weil ich einen Zeiger auf ein array habe...
Ich bin mir aber,wie gesagt nicht sicher und für weitere antworten sehr dankbar
Mit Freundlichen Grüßen
Fingolin
--
Wenn einer mit Vergnügen zu einer Musik in Reih und Glied marschieren kann, dann hat er sein großes Gehirn nur aus Irrtum bekommen, da für ihn das Rückenmark schon völlig genügen w�rde.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.05.2008, 12:51 Uhr
Kest
saint


Hi!

Entweder >pStart=Start;<, da automatisch in einen Zeiger auf das erste Element umgewanderlt wird, oder >pStart=&Start[0];<, die Adresse des ersten Elements zuweisen.


Zitat von Hans:
Wenn Du in der 3. Zeile den Zeiger pStart selbst initialisieren willst, muss Du den Stern (*) davor weglassen, also so:

Falsch: Zuweisung eines Zeiger-Zeigers an einen Zeiger.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.05.2008, 13:13 Uhr
Fingolin



Hi
aber ich möchte gerne einen Zeiger auf alle elemente des arrays haben,so dass ich nicht alles einzeln ändern muss,geht das?
Grüße Fingolin
--
Wenn einer mit Vergnügen zu einer Musik in Reih und Glied marschieren kann, dann hat er sein großes Gehirn nur aus Irrtum bekommen, da für ihn das Rückenmark schon völlig genügen w�rde.

Dieser Post wurde am 24.05.2008 um 13:14 Uhr von Fingolin editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.05.2008, 13:35 Uhr
Oliver
S2-Pixelgeneral


Mit einem Zeiger auf das erste Element hast du quasi auch die Zeiger auf die nächsten Elemente. Du kannst dann mit dem Zeiger genauso auf das Array zugreifen:


C++:
// 5. Element von Start manipulieren
pStart[5] = 'a';



Ein "Array" ist also im Endeffekt auch nichts anderes als ein Pointer auf das erste Element des Datenblocks.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )

Dieser Post wurde am 24.05.2008 um 13:36 Uhr von Oliver editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.05.2008, 14:08 Uhr
Fingolin



Okay aber woher dann der Fehler?^^
Grüße
--
Wenn einer mit Vergnügen zu einer Musik in Reih und Glied marschieren kann, dann hat er sein großes Gehirn nur aus Irrtum bekommen, da für ihn das Rückenmark schon völlig genügen w�rde.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.05.2008, 14:55 Uhr
Kest
saint



Zitat von Fingolin:
Okay aber woher dann der Fehler?^^

Ein Konvertierungsfehler.

So sollte's gehen:

C++:
char     Zielort[Namenslaenge];
char     Startort[Namenslaenge];
char     *pStartpunkt=Startort;  // warum nicht gleich initalisieren?
char     *pEndpunkt=NULL;
             // entweder
               pEndpunkt=Zielort;
            // oder
               pEndpunkt=&Zielort[0];


--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 24.05.2008 um 14:55 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: