Veröffentlicht 19. Juli 200223 j Hallo! Ich bräuchte mal eure Hilfe. Ich weiß, wie ich in C++ einem Zeiger eine Variable zuordnen kann. Wie kann ich machen, daß ein Zeiger auf ein ganzes Feld zeigt? :confused: Könnt ihr mir da weiterhelfen? Blue55
19. Juli 200223 j int x[5] = {1, 2, 3, 4, 5}; int*px = x; for (int i = 0 ; i<5 ; i++) TRACE("%d " , px[i]); *px++ oder *px+i gehen auch.
19. Juli 200223 j Hi, versuch´s doch mal mit: ** Da char* das selbe wie char[0] ist kann man halt auch ** schreiben. Bsp.: char* ist ein Feld von char-varibalen char** ist ein Zeiger auf ein Feld von char-variablen oder int** ist halt ein zeiger auf ein Feld mit int-Variablen Allerdings solltest du bei dem ganzen aufpassen, wo du liest und vor allem ( !!!wichtig!!! ) wo du schreibst, da der Compiler hier nicht erkennt, wo das Feld zuende ist. So kannst du ohne Probleme auf das Feld n+3 in einem n-großen Array zugreifen (lesend und schreibend). Hoffe das hilft dir weiter... Eight
21. Juli 200223 j Original geschrieben von Eight Hi, versuch´s doch mal mit: ** Da char* das selbe wie char[0] ist kann man halt auch ** schreiben. Bsp.: char* ist ein Feld von char-varibalen char** ist ein Zeiger auf ein Feld von char-variablen Vorsicht mir solchen Aeusserungen, es gibt sehr wohl Unterschiede zwischen char * und char[], bzw den Pointern darauf! Naeheres in der Section 6 der C-FAQ (http://www.faqs.org/faqs/C-faq/faq/). Nic
22. Juli 200223 j Original geschrieben von Eight char* ist ein Feld von char-varibalen char** ist ein Zeiger auf ein Feld von char-variablen oder int** ist halt ein zeiger auf ein Feld mit int-Variablen char* ist ein Zeiger auf eine char Variable und kein Feld von char Variablen. char** ein Zeiger auf ein Zeiger auf eine char Variable und kein Zeiger auf ein Feld von char Variablen !!!
22. Juli 200223 j Is ja gut und schön, aber sollte dann nicht in folgendem Beispiel in cChar der Inhalt von pString stehen? Tut es aber nicht. In cChar steht nur das erste Char von pString. char* pString = "Teststring"; char cChar = *pString; Also siehts für mich schon so aus als wäre pString ein Feld, da: char cChar = *(pString+2); cChar den dritten Buchstaben von pString zuweist.
22. Juli 200223 j Original geschrieben von maddin char* ist ein Zeiger auf eine char Variable und kein Feld von char Variablen. char** ein Zeiger auf ein Zeiger auf eine char Variable und kein Zeiger auf ein Feld von char Variablen !!! char*: Zeiger auf eine Adresse, die vom Compiler mit der Länge 1 Byte gehandelt wird -> Variablentypen sind u.a. dazu da um den Offset zu haben (deswegen kann auch kein Compiler nen void-Zeiger direkt handeln !) So und jetzt kommt der nächste, der eine noch genauere Definition gibt :D
22. Juli 200223 j Original geschrieben von Eight Is ja gut und schön, aber sollte dann nicht in folgendem Beispiel in cChar der Inhalt von pString stehen? Tut es aber nicht. In cChar steht nur das erste Char von pString. char* pString = "Teststring"; char cChar = *pString; Also siehts für mich schon so aus als wäre pString ein Feld, da: char cChar = *(pString+2); cChar den dritten Buchstaben von pString zuweist. Natürlich kann man ein Byte auch als "Feld" bezeichnen. Jeder definiert das hier irgendwie anders. Man muss sehen dass *pString hier dasselbe ist wie *(pString[0]). Dei erste Adresse eines solchen Feldes kann man auch ohne die Indexklammern schreiben, was oft zum missverständnissen führt. Deswegen halte ich es dann fast immer so: char *test_str="Hallo"; char* ptr_str; pst_str=&test_str[0]; und NICHT pst_str=test_str;
22. Juli 200223 j Original geschrieben von Eight Also siehts für mich schon so aus als wäre pString ein Feld, da: char cChar = *(pString+2); cChar den dritten Buchstaben von pString zuweist. Wenn Du in eine Reihenhaussiedlung ziehst, dann ist klar, dass zwei Hausnummern weiter ein Haus steht, das Deinem sehr ähnlich sieht. Das kannst Du aber nicht aus der Hausnummer allein folgern
22. Juli 200223 j Er wollte doch einen Zeiger auf ein Feld: int (*p)[32]; oder allgemeiner: int (*p)[];
22. Juli 200223 j Lustig - wir lagen tatsächlich irgendwie alle neben der Frage (wenn auch nicht vollkommen daneben) =8-) Aber wenn man schon soviel über Zeiger redet... Diverse Zeiger-Deklarationen sind hier aufgelistet.
16. Januar 201114 j Hallo Leute, dieses Thema ist zwar schon alt, aber ich hoffe ihr könnt mir trotzdem helfen. In meinem Programm habe ich 3 Felder, nun muss ich 3 Zeiger erstellen die auf die Felder zeigen. also angenommen ein Feld is double x[N]; und ein Zeiger: double (*px)[N]; soweit so gut, jedoch wie sage ich dem Zeiger jetzt dass er auf mein zuvor erstelltes und gefülltes Feld x zeigen soll? und wenn das geschafft ist, muss ich ein neues Feld erstellen mit dem glichen Inhalt. Dazu soll der Zeiger verwendet werden. Wie sage ich dann meinem neuen Feld, dass es sich seine Werte von diesem Zeiger holen muss?? :confused::confused::confused::confused::confused: mfg
16. Januar 201114 j soweit so gut, jedoch wie sage ich dem Zeiger jetzt dass er auf mein zuvor erstelltes und gefülltes Feld x zeigen soll?So, wie du es bei jedem anderen Zeiger auch machen würdest: px = &x; und wenn das geschafft ist, muss ich ein neues Feld erstellen mit dem glichen Inhalt. Dazu soll der Zeiger verwendet werden. Wie sage ich dann meinem neuen Feld, dass es sich seine Werte von diesem Zeiger holen muss??memcpy oder eine Schleife.
16. Januar 201114 j Könntest du ein Beispiel für die Schleife geben? Ich weiß grad nicht wie das gemeint ist:confused:
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.