Blue55 Geschrieben 19. Juli 2002 Geschrieben 19. Juli 2002 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 Zitieren
Crush Geschrieben 19. Juli 2002 Geschrieben 19. Juli 2002 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. Zitieren
Eight Geschrieben 19. Juli 2002 Geschrieben 19. Juli 2002 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 Zitieren
nic_power Geschrieben 21. Juli 2002 Geschrieben 21. Juli 2002 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 Zitieren
maddin Geschrieben 22. Juli 2002 Geschrieben 22. Juli 2002 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 !!! Zitieren
Eight Geschrieben 22. Juli 2002 Geschrieben 22. Juli 2002 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. Zitieren
gugelhupf Geschrieben 22. Juli 2002 Geschrieben 22. Juli 2002 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 Zitieren
gugelhupf Geschrieben 22. Juli 2002 Geschrieben 22. Juli 2002 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; Zitieren
Klotzkopp Geschrieben 22. Juli 2002 Geschrieben 22. Juli 2002 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 Zitieren
Blue55 Geschrieben 22. Juli 2002 Autor Geschrieben 22. Juli 2002 Ähm, danke. :confused: :confused: :confused: Blue55 Zitieren
Shadax Geschrieben 22. Juli 2002 Geschrieben 22. Juli 2002 Er wollte doch einen Zeiger auf ein Feld: int (*p)[32]; oder allgemeiner: int (*p)[]; Zitieren
Crush Geschrieben 22. Juli 2002 Geschrieben 22. Juli 2002 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. Zitieren
cwodka Geschrieben 16. Januar 2011 Geschrieben 16. Januar 2011 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 Zitieren
Klotzkopp Geschrieben 16. Januar 2011 Geschrieben 16. Januar 2011 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. Zitieren
cwodka Geschrieben 16. Januar 2011 Geschrieben 16. Januar 2011 Könntest du ein Beispiel für die Schleife geben? Ich weiß grad nicht wie das gemeint ist:confused: Zitieren
Klotzkopp Geschrieben 16. Januar 2011 Geschrieben 16. Januar 2011 int i; for(i=0; i<N; ++i) y[i] = (*px)[i];[/code] Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.