Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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

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.

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

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;

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

Er wollte doch einen Zeiger auf ein Feld:

int (*p)[32];

oder allgemeiner:

int (*p)[];

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

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

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.