Zum Inhalt springen

[C] Funktionen / aufgerufene Funktion ändert Daten


Empfohlene Beiträge

Geschrieben

Hi zusammen,

bin gerade an einer Übungsaufgabe in C, bei der eine Funktion gebraucht wird. Die Funktion übernimmt den Inhalt der Variablen n, ändert ihn in der Funktion und gibt ihn zurück an das aufrufende Hauptprogramm (main). Die Variable gew_mw verursacht, soweit ich beim Debuggen gekommen bin, noch keine Probleme. Es geht hier also um n.

Der gesamte Programmcode in C ist als txt-Datei dabei.

Aufruf der Funktion aus dem Hauptprogramm:

funktion_1(&gew_mw, &n);

Die Funktion beginnt:

void funktion_1 (double *gew_mw, int *n)

Beim Durchgehen im Einzelschritt meckert der Debugger von MS Visual C++ Express in der Funktion bei

(...)

do {

*n++;

printf("%i . Wertepaar:\t", *n);

(...)

in einem Fenster "unbehandelte Ausnahme ... Zugriffsverletzung".

Das Fenster "lokal" mit den Variablen-Inhalten etc. zeigt für

n "Fehler: Ausdruck kann nicht ausgewertet werden".

Ich vermute falscher Aufruf / Übergabe usw. der Variablen-Inhalte...

Hinweise willkommen. :confused:

Ciao, Andreas

Programmcode_4-1.txt

Geschrieben
*n++;
Das hier tut nicht, was du erwartest. Der Inkrementoperator bindet stärker als der Dereferenzierungsoperator. Hier wird also zuerst der Zeiger n inkrementiert, und dann der inkrementierte Zeiger dereferenziert (was im allgemeinen keinen Nebeneffekt hat, aber bei ungültigen Zeigern undefiniertes Verhalten bewirkt).

Du willst erst dereferenzieren und dann inkrementieren, also musst du Klammern benutzen:

(*n)++;
Noch besser wäre, wenn du dir gleich angewöhnst, Prefix statt Postfix zu benutzen:
++*n;

Da hast du das Problem nicht ;)

übergieb deiner funktion_1 Referenzen :)
Referenzen gibt's in C nicht.
  • 1 Monat später...
Geschrieben

Moin Klotzkopp,

ja danke, die Klammer war's! ;-)

Darauf wurde im Buch nicht hingewiesen.

Prefix statt Postfix habe ich auch probiert ... geht! Davon wußte ich noch nicht. Wieder was gelernt.

Schönen Tach noch!

Ciao, Andreas

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...