online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon TByte vom 11.12.2021, 19:14 Options

[C++] Struktur Zeiger als Parameter

Hallo!
Ich bin gerade auf ein Problem gestoßen:
Ich habe eine Funktion geschrieben, die als Parameter einen Struktur-Zeiger empfängt. Aber bevor weiter unverständlich rumschwafle zeig ich am besten mal den code-ausschnitt:

struct meinestr
{
char feld[30];
};

int meinefunktion(meinestr *mstr)
{
*mstr.feld[2] = 'd';
return 0;
}



Und die entsprechende Fehlermeldung:
Zitat:

error C2228: Links von ".feld" muss sich eine Klasse/Struktur/Union befinden.

Compiler: VC++
Plattform: Windoof
Typ: Konsolenanwendung...
Also an sich sollte sowas ja funktionieren, *mstr ist ja eine Struktur (natürlich vorrausgesetzt es wird eine Struktur Referenz übergeben.
Wäre wirklich dankbar für irgendwelche Ansätze!
mfg
TByte


Antwort schreiben

Antwort 1 von Supermax vom 11.12.2021, 19:42 Options

Meine Kenntnisse sind zwar schon etwas eingerostet, aber m.W. müßte es statt

*mstr.feld[2] = 'd';

mstr->feld[2] = 'd'

heißen

Antwort 2 von Elefunty vom 11.12.2021, 20:40 Options

jo,
mit mstr->feld[2] sollte das gehen.
soweit ich weiß auch (*mstr).feld[2]
da sollte man sich vllt noch mal das kapitel zeiger in einem tut anschauen. normalweise ist das erklärt.

Ele

Antwort 3 von TByte vom 12.12.2021, 21:49 Options

Hallo
Das Problem ist ja, wenn ich das gleiche mit int mache, was ich in einer anderen Dunktion gemacht, dann funktioniert es.
Ich guck noch mal was Fehlermeldung bei Supermax Vorschlag raus kommt, sobal ich wieder an meinen code komme :)
Auf jeden fall bisher danke,
mfg
TByte

Antwort 4 von JanniV vom 20.01.2022, 13:19 Options

Weiß nicht, ob Du Dein Problem jetzt selbst gelöst hast, aber ohne es jetzt in meinem Compiler auszuprobieren müsste es meines Erachtens nach lauten:

struct meinestr
{
    char feld[30];
};

int meinefunktion(struct meinestr *mstr)
{
    mstr->feld[2] = 'd';
    return 0;
}


Das Ansprechen der Strukturmember haben meine Vorredner schon richtigerweise korrigiert. Aber Du müsstest den Parametertyp noch explizit deklarieren. (struct einsetzen)

Oder Du verwendest ein typedef. Dann kannst Du das Schlüsselwort struct weglassen.

typedef  struct tagMeinestr
{
    char feld[30];
} meinestr;

int meinefunktion(meinestr *mstr)
{
    mstr->feld[2] = 'd';
    return 0;
}

Ähnliche Themen

Cursor
Cursor1991  02.06.2008 - 25 Hits - 1 Antwort

Pc startet nicht richtig Hoch
Volle_Star  02.06.2008 - 57 Hits - 1 Antwort

textfile in treeview darstellen - c#
streezer  04.06.2008 - 23 Hits - 2 Antworten

Parameterüber an kompiliertes Programm?
TByte  03.06.2008 - 31 Hits - 17 Antworten

1. Main-Parameter (C++) 2. Perl-Module (C++)
TByte  02.08.2008 - 44 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026