Erklärung Zeiger

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Erklärung Zeiger

    Guten Abend,

    ich bin ganz frisch in der Programmierung. Ein Buch("Einstieg in Objektive-C und Cocoa habe ich mir zum leichten Einstieg gekauft. Bis jetzt komme ich sehr gut durch die Themen.
    Nun habe ich aber das Problem das ich etwas nicht verstehe. Es ergibt einfach keinen Sinn für mich wozu man den "Zeiger" braucht.

    Ich schreibe hier einmal das Buchbeispiel:

    #include <stdio.h>

    int main()
    {
    int a = 5;

    int *pa = &a;
    *pa = 10;

    int *pb = &a;
    *pb = *pb + 3;

    printf("%d\n", a);

    return 0;
    }

    Konsolenergebnis ist: 13

    Ich verstehe es soweit das er mit der Variable a arbeitet und auf diese verweist. Theoretisch könnte ich aber doch auch direkt mit der Variable arbeiten oder? Wozu ist so ein Verweis gut?

    Dies ist mein 1. Forenbeitrag und ich hoffe das ich mich soweit an die Forenregeln halte.

    Ich bedanke mich schon einmal recht herzlich bei allen, die sich mit meinem Thema beschäftigen!

    Viele Grüße

    Jonas
  • es ist eine indirektion

    "früher" war das fast die einzige möhlichkeit variablen zu gruppieren und eben "variablen in variablen" zu halten.

    heute verwischt das etwas weil man mehr sicherheitsnetze um diese art von direktem arbeiten mit dem speicher aufspannt

    ein pointer oder halt zeiger ist halt die addresse des speichers in dem ein wert gehalten wird - und nur die konventionen der sprache, des compilers oder des framwork legt fest was du damit anstellst oder es interpretierst.
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • "fileExistsAtPath:isDirectory:" das verwirrt mich jetzt ein wenig mehr. Also ein wenig verstehe ich den Zeiger. Er greift mit dem Zeiger indirekt auf die Variablen zu, aber warum nicht lieber direkt mit den Variablen arbeiten? Möchte im Buch nichts überspringen und alles genau herausfinden, deswegen frage ich.
    Ich hoffe das ist in Ordnung.

    Gruß
  • jonaswinterhalder schrieb:

    "fileExistsAtPath:isDirectory:" das verwirrt mich jetzt ein wenig mehr. Also ein wenig verstehe ich den Zeiger. Er greift mit dem Zeiger indirekt auf die Variablen zu, aber warum nicht lieber direkt mit den Variablen arbeiten? Möchte im Buch nichts überspringen und alles genau herausfinden, deswegen frage ich.
    Ich hoffe das ist in Ordnung.

    Gruß


    eine methode kann ja immer nur einen rückgabewert haben. um aber mehrere zu bekommen kann man das eben so verwenden.
    auch bei NSColor "getRed:green:blue:alpha:" gibt es eine schöne methode welche das verdeutlicht.
  • die methode des frameworks möchte von dir eine bool variable in der es ihr ergebnis abspeichern kann.

    nur konnten ja die programmierer bei apple kaum wissen wie deine variablen aussehen werden.

    also möchten sie einfach von dir wissen wo im speicher deine variable sich befindet - laden ihr ergebnis an diese stelle und schon kannst du damit arbeiten.
    snafu
    :() { :|: &};:
    sometimes i dream in hex
    Obey gravity! Because its a law!
  • Zeiger braucht man oft in der Programmierung. Für den Anfang reicht es, wenn Du verstehst wie man damit umgeht. Der Rest, wo sie Verwendung finden, bekommt man mit der Zeit mit, wenn man fleißig Programmiert.

    Siehe vllt. dir dazu von C von A bis Z die Kapitel Array und Zeiger an.

    chartus schrieb:

    die methode des frameworks möchte von dir eine bool variable in der es ihr ergebnis abspeichern kann.

    nur konnten ja die programmierer bei apple kaum wissen wie deine variablen aussehen werden.


    Bool beschreibt die Variable wie sie aussieht. Allerdings weiß man nicht wo sie im Speicher stehen wird. Funktionen kannst Du Werte übergeben und Du bekommst auch einen Wert zurückbekommen (Call By Value + Rückgabewert ). Allerdings kannst Du einer Funktion/Methode auch einen Zeiger übergeben (Call By Reference ). Der Inhalt des übergebenen Zeigers kann die Funktion/Methode verändern.

    Wenn Du Speicher reservierst (void *malloc(size_t size)), dann wird dir ein Zeiger zurück gegeben. Das ist z.B. eine weitere Verwendung, die Du öfter benützen wirst, wenn auch nicht immer direkt aufrufst.
  • Da Problem an dem Beispiel ist, dass es eigentlich genau das Gegenteil von dem zeigt (zwei Zeiger auf eine Variable), wofür Zeiger erfunden wurden (ein Zeiger auf (nacheinander) zwei Variablen). Ich habe mal den Text aus meinem Buch verlinkt:
    cocoading.de/webspace/Zeiger.pdf
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?