Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben
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

Geschrieben
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 !!!

Geschrieben

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.

Geschrieben
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 :D

Geschrieben
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;

Geschrieben
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 ;)
Geschrieben

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.

  • 8 Jahre später...
Geschrieben

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

Geschrieben
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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...