Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Array aus struct mit Pointer

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.06.2018, 12:17 Uhr
JJJanezic



Hallo,

Ich habe ein struct, das nichts anderes beinhaltet als einen Pointer auf einen Integer.

struct test
{
int *ptr_mem;
};


Dann lege ich ein Array mit 3 Elementen dieses structs an:

test t[3];


Dann möchte ich im ersten Element des Arrays dem Integer, auf den der Pointer zeigt, einen Wert zuweisen. Ich würde das so machen:

*t[0].ptr_mem = 5;

Dazu muss ich den ja mit dem * de-referenzieren. Soweit ich nicht ein Array habe, sondern einfach nur 1 struct funktioniert das, aber sobald ich ein Array habe, bekomme ich eine „bad access“-exception. Auch das Setzen der Klammern hilft nix….

Bitte um Eure Unterstützung.

Besten Dank,

JJJ
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.07.2018, 23:30 Uhr
Hans
Library Walker
(Operator)


Hi,

Deine Zeiger referenzieren nichts, d.h. es gibt keine definierten Ziele, auif die sie verweisen, also zeigen würden. Die Codefragmente, die Du bisher hast, erzeugen lediglich die Zeiger, es fehlen aber die Ziele, auf die sie verweisen sollen. Die musst Du noch definieren, und anschliessend die Zeiger initialisieren, d.h. die Adressen, auf die sie verweisen sollen, müssen hinein geschrieben werden. Dabei kommt der &-Operator als Adressdereferenzierer ins Spiel, so wie er z.B. auch bei scanf() verwendet wird.
Näheres steht in jedem Lehrbuch drin, - zugegebenermassen nicht immer gleich verständlich...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.07.2018, 09:55 Uhr
ao

(Operator)



Zitat von JJJanezic:
Dazu muss ich den ja mit dem * de-referenzieren. Soweit ich nicht ein Array habe, sondern einfach nur 1 struct funktioniert das ...

Aber nur zufällig. Es ist genauso falsch wie die Array-Variante.

Du musst deine Pointer auf gültigen Speicher zeigen lassen, bevor du einen Wert zuweist. Gültiger Speicher heißt, mit dem &-Operator die Adresse einer deklarierten int-Variablen nehmen oder mit new Speicher vom Betriebssystem holen.

Lies nochmal genau in deinem C++-Buch nach, wie man mit Pointern umgeht. Das wird da bestimmt vorgemacht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: