Zum Inhalt springen
  • 0

Funktionen


julsos

Frage

Hallo zusammen,

ich muss natürlich mal wieder nerven. Morgen hab ich meine Programmierprüfung, leider kommen noch immer Fragen auf, da ich Thema für Thema durchgehe und erst mit dem nächsten Thema weiter mache, wenn ich das aktuelle Thema verstanden habe.

hier mein Code zum Verständnis der Fragen:  

472196240_Bildschirmfoto2020-07-22um12_32_58.png.bdc948528191bf73f16c39d827f74af7.png

ich hab ihn mal in Xcode eingefügt und mit dem Debugger ausgeführt.

 

Ich verstehe das Ergebnis aber folgende Sachen verstehe ich nicht:

1. Was bedeutet das & in der Funktion?

2. Was bedeutet das * in der Funktion?

 und was ich mich schon länger Frage...

3. was hat es denn immer mit dem -> auf sich?!

 

Liebe Grüße,

Julian

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

7 Antworten auf diese Frage

Empfohlene Beiträge

  • 0
vor 43 Minuten schrieb Chief Wiggum:

Der Forenbereich "Prüfungen und Lösungen" ist primär für die Diskussion der Abschlussprüfungen gedacht. In deinen Fragen geht es ja primär um generelle Verständnisfragen zur Programmierung.

Oh Entschuldigung, wusste nicht genau welche Kategorie ich wählen soll und dachte bei Aufgaben zur Prüfungsvorbereitung wäre ich hier richtig🙈

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 1 Stunde schrieb julsos:

Ich verstehe das Ergebnis aber folgende Sachen verstehe ich nicht:

1. Was bedeutet das & in der Funktion?

2. Was bedeutet das * in der Funktion?

 und was ich mich schon länger Frage...

3. was hat es denn immer mit dem -> auf sich?!

 

Bist du sicher? Wie kannst du das Ergebnis verstehen, wenn du die Operatoren gar nicht kennst?

1. Das ist der Adressoperator, liefert zu einer Variable die Adresse.

2. Das ist der Dereferenzierungsoperator, der liefert dir den Inhalt einer Zeigervariablen.

3. Das ist einer der Elementzugriffsoperatoren. Das ist eine Kurzschreibweise für (*variable).element. Der macht also im Grunde das Gleiche wie der . nur dass dieser Operator direkt auf Zeigervariablen funktioniert.

 

Achso sorry, du meintest speziell bei Funktionen. Da sagt dir das & und * eben, dass es Referenz bzw. ein Zeiger ist.

Bearbeitet von lessbess
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 20 Minuten schrieb lessbess:

Bist du sicher? Wie kannst du das Ergebnis verstehen, wenn du die Operatoren gar nicht kennst?

Sinnvolle Frage.

Ich würde sagen: Pauk erstmal die Grundlagen, bevor du jetzt täglich ein neues Thema zu einer Aufgabe eröffnest.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 5 Minuten schrieb Visar:

Sinnvolle Frage.

Ich würde sagen: Pauk erstmal die Grundlagen, bevor du jetzt täglich ein neues Thema zu einer Aufgabe eröffnest.

Es sind ca 120 Aufgabenblätter und zu 3 stück hatte ich jetzt fragen. Das Problem ist ja auch, dass ich keine Materialien hab und mir deshalb dazu Youtubevideos anschaue, jedoch werden da natürlich nicht immer 1000 Fallbeispiele durchgespielt, auch nicht in meinen Büchern die ich mir extra dazu gekauft habe. Ich schaue natürlich selbst erstmal nach, bevor ich hier eine Frage nach der anderen rein stelle. Dass & ein Adressoperator ist weis ich und dass * Beispielsweise den Wert einer Adresse ausgibt weis ich auch, aber ob das hier auch gilt wusste ich nicht. Mir ist der Zusammenhang nicht klar. Aber ich suche weiter nach Lösungen, bis jetzt habe ich jedoch noch keine Aufgabe in diesem "Stil" gefunden, welche dazu noch eine Beschreibung liefert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Die Problematik ist wohl, dass du nicht verstehst, wie Funktionen funktionieren.

Falls in eine Funktion Parameter übergeben werden müssen, dann werden immer Kopien der Parameter übergeben. Das wird "call-by-value" genannt. Das ist in sofern nützlich, dass die Variablen im inneren der Funktion eine anderen Gültigkeitsbereich haben und sie außerhalb der Funktion unberührt bleiben. 

Es gibt aber manchmal Situationen, da möchte man den Wert einer Variable, der außerhalb der Funktion gilt, ändern. Dann muss man die Variable als Referenz in die Funktion überreichen. Das nennt sich dann "call-by-reference" und hier kommen wir nun zu deinen Fragen:

vor 35 Minuten schrieb julsos:

1. Was bedeutet das & in der Funktion?

Das & ist der sog. Adress-Operator. Es wird also direkt die Adresse von s1 übergeben. Also a ist die Adresse von s1.

Angenommen die Adresse von s1 ist 0x00000001, dann ist a ebenfalls 0x00000001. Das ist das besagte call-by-reference. Wir können direkt mit dem Objekt arbeiten.

vor einer Stunde schrieb julsos:

2. Was bedeutet das * in der Funktion?

Dies ist wiederum ein Zeiger. Ein Zeiger ist ja eine Variable, die als Wert eine Adresse besitzt. Im Funktionsaufruf f(s1, &s2); überreichen wir der Funktion die Adresse von s2 (wegen dem Adress-Operator). Da es sich hier um Call-by-Value handelt, wird die Adresse kopiert und in einen anderen Speicherbereich abgelegt. Das ist unser Zeiger. Der Zeiger hat dann die Adresse 0x00000002 und als Wert 0x00000001.

vor einer Stunde schrieb julsos:

3. was hat es denn immer mit dem -> auf sich?!

Der Pfeil ist ebenfalls ein Zugriffs-Operator, wie der Punkt, allerdings für Zeiger.
Anstatt dem Pfeil könntest du auch die Dereferenzierung verwenden. Also (*b).x = 2;

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 12 Minuten schrieb Visar:

Sinnvolle Frage.

Ich würde sagen: Pauk erstmal die Grundlagen, bevor du jetzt täglich ein neues Thema zu einer Aufgabe eröffnest.

PS. Im Grunde hast du natürlich recht und ich bin ja auch schon dran mir das selbst beizubringen, aber manchmal braucht man vielleicht doch noch Hilfe zu individuellen Sachen. Ein Buch oder ein spezialisiertes YouTubeVideo liefert einfach nicht immer die Hilfe die ein Mensch einem direkt geben kann

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...