von zeigern und strukturen
-
hallo wie kann ich *daten einen wert zu weisen?
#include <stdio.h> #include <stdlib.h> struct Struktur { int *daten; }; int main() { struct Struktur *str; str=(struct Struktur*)malloc(sizeof(struct Struktur)); (*str).daten=(int*)malloc(sizeof(int)); }
-
Warum verwendest du hier überhaupt Zeiger?
Generell entspricht aber
(*str).daten
gleich
str->daten
Dann kannst du mittels des Dereferenzierungsoperators darauf zugreifen:
*(str->daten) = 42;
-
str->daten[0] =
geht auch.
Da es selten sinnvoll ist, ein
int
viamalloc
zu holen, beschreib mal dein eigentliches Problem.
-
das problem war eigentlich nur, dass ich über einen zeiger auf eine struktur auf einen zeiger innerhalb dieser struktur zugreifen wollte, damit ich keine globalen variablen anlegen muss, und (*str).(*daten) wollte der compiler nicht annehmen.
die lösungen funktionieren aber, vielen dank!
-
das problem war eigentlich nur, dass ich über einen zeiger auf eine struktur auf einen zeiger innerhalb dieser struktur zugreifen wollte, damit ich keine globalen variablen anlegen muss
wieso muss du globale Variablen anlegen wenn du es nicht so machst?
-
weil mehrere unterprogramme gleichzeitig auf die selben daten zugreifen sollen und mir schlicht und ergreifend nur die möglichkeiten globale variablen und übergabe von zeigern auf datenstrukturen eingefallen sind.
war meine idee denn so schlecht?
-
warum nicht einfach den inneren Zeiger weglassen - da brauchst du immer noch keine globalen
struct Struktur { int daten; }; int main(void) { struct Struktur *str; str=malloc(sizeof(struct Struktur)); str->daten=10; return 0; }
-
Jesse0815 schrieb:
...globale variablen...
war meine idee denn so schlecht?
Ja, dilettantisch.
-
Schön zusammengeschnipseltes "Zitat" @Wutz
-
struct Struktur { int daten; }; void meine_function(struct Struktur* str) { if(str->daten)... } int main(void) { struct Struktur str; str.daten=10; //dieser funktion ist es egal ob heap oder stack //die will nur einen pointer meine_function(&str); return 0; }
und jetzt noch mal die Frage
damit ich keine globalen variablen anlegen muss
warum musst du?