Forum: Compiler & IDEs Zugriff auf Arrays in einem struct mittels pointer


von P. K. (dg4ek)


Lesenswert?

Hallo,
als Anfänger in C++ versuche ich gerade zu verstehen, wie man
mittels Pointer auf Arrays in einem struct zugreifen kann. Leider kann
ich dazu jedoch nichts eindeutiges finden, kann jemand bitte einen
Tipp geben?


Folgendes ist klar und funktioniert auch, gewollt ist direkter Zugriff
über die Adresse auf x un Ausgabe des Inhaltes

#include <iostream>


int main()
{

  int x;
  int *p; // Pointer p erzeugen um auf Variable des Typs int zuzugreifen

  p = &x; // Pointer p auf Adresse von x setzen

  *p = 42; // x mittels Derefenzierer * über p mit 42 beschreiben.


  std::cout << x << std:endl; // Inhalt x zur Konsole ausgeben

return 0;

}


--------------------------------------------------

Was nun leider nicht funktioniert ist folgendes:


#include <iostream>


struct xy_matrix
{
  int array_x[5];
  int array_y[5];
};


int main()
{

  xy_matrix *p; // Pointer p des Typs xy_matrix erzeugen

  p = &array_x; // hier hätte ich gern die Adresse des Elements array_x
// geholt, klappt aber nicht :(((

usw usw.


Wo ist der dicke Denkfehler?
Es hilft auch nichts, das struct innerhalb von main() zu schreiben oder
&array_x[0] zu verwenden.


Frage:
Wie komme ich an die Adresse von array_x und array_y und wie beschreibe
ich dann diese Arrays?

Schon jetzt, vielen Dank für eure Hilfe..

Viele Grüsse
Peter

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Peter Krengel schrieb:
> struct xy_matrix
> {
>   int array_x[5];
>   int array_y[5];
> };

Das definiert nur den Typ, aber instanziiert keine Variable.

Ohne Variable kein Speicher, und ohne Speicher auch keine Adresse des 
Speichers, über die auf irgendwas zugegriffen werden könnte.

von P. K. (dg4ek)


Lesenswert?

Oh ja, ......danke für den Hinweis....wohl ein typischer 
Anfängerfehler...

Danke nochmal!
Gruss
Peter

von xfr (Gast)


Lesenswert?

1
struct xy_matrix // hier wird der Typ definiert
2
{
3
  int array_x[5];
4
  int array_y[5];
5
};
6
7
struct xy_matrix meine_matrix; // eine Variable vom Typ xy_matrix definieren
8
9
int main()
10
{
11
  xy_matrix *p;      // Pointer auf xy_matrix
12
  p = &meine_matrix; // Pointer zeigt auf meine_matrix
13
  
14
  int* p2;                    // Pointer auf Integer
15
  p2 = meine_matrix.array_y;  // Pointer zeigt auf erstes Element aus array_y
16
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.