Der Unterschied zw. diesen zwei Zeigern



  • Vielleicht ein Beispiel?

    #include <list>
    #include <utility> //std::pair
    #include <iostream>
    
    int main()
    {
    	std::list<std::pair<int, char>>* pointerToList = nullptr; //Dieser Zeiger kann auf irgendeine list<pair<int, char>> zeigen
    	std::list<std::pair<int, char>> aList; //irgendeine list<pair<int, char>>
    	pointerToList = &aList; //drauf zeigen lassen
    
    	//Folgendes geht NICHT (meintest du das?):
    	//std::list<std::pair<float, double>> anotherList;
    	//pointerToList = &anotherList; //Zeiger kann eben nur auf eine list<pair<int, char>> zeigen
    
    	aList.push_back(std::make_pair(3, 'c')); //einen Wert reinpacken
    	std::cout << pointerToList->front().first << " " << pointerToList->front().second; //Zugriff ueber den Zeiger
    }
    


  • Ja! Genau was ich meinte. Dankeschön fürs Beispiel. Ich gehe jetzt schlafen aber ich habe mehrere Fragen. Ich hoffe, dass es ok wäre, wenn ich diesen Beitrag benutzte, um weitere Fragen zu stellen.



  • Hallo,

    kann mir jemand erklären, was das zweite Argument hier macht? Oder was ist das genau?

    int f(int* (*g)(int*));



  • Zweites Argument? Siehst du da ein Komma?

    Das sind deine Hausaufgaben. Gehe das Unterrichtsmaterial noch mal durch.



  • Es sind keine Hausaufgaben. Wie mein erster Beitrag steht: ich lerne c++ momentan als Hobby. 🙄



  • Der Parameter ist ein Zeiger auf eine Funktion, die einen int* zurückgibt und einen int* als Parameter hat:

    int* foo(int* pointer)
    {
    	//...
    }
    
    int main()
    {
    	int* (*functionPointer)(int*) = foo;
    	int* pointer;
    	functionPointer(pointer); //rufe foo über den Zeiger auf
    }
    

    Aber schau dir mal lieber std::function an, in modernem C++ ist das das Mittel der Wahl bei Funktionsobjekten, Funktionen und irgendwelchen Zeigern darauf http://en.cppreference.com/w/cpp/utility/functional/function



  • laraplp schrieb:

    Hallo,

    kann mir jemand erklären, was das zweite Argument hier macht? Oder was ist das genau?

    int f(int* (*g)(int*));

    g ist ein Zeiger auf eine Funktion, die einen int-Zeiger als Parameter hat und einen int-Zeiger zurückgibt.
    Wieso beschäftigst du dich als Anfänger so viel mit Zeigern? Du solltest C++ richtig von Grund auf lernen, und nicht irgendwo anfangen.



  • Super. Danke!



  • laraplp schrieb:

    Es sind keine Hausaufgaben. Wie mein erster Beitrag steht: ich lerne c++ momentan als Hobby. 🙄

    Wer‘s glaubt...



  • laraplp schrieb:

    Es sind keine Hausaufgaben. Wie mein erster Beitrag steht: ich lerne c++ momentan als Hobby. 🙄

    Nicht so sehr die Thematik sondern vor allem die Fragen, die du dazu stellst, riechen doch sehr nach Hausaufgaben.
    Irgendwo musst du die Ausdrücke ja her haben - und jemand, der die selbst zusammengebaut hat, würde eher fragen,
    warum das Ding nicht so funktioniert wie erwartet, oder "ob mas das so schreiben kann". Du fragst jedoch ein wenig
    wie der "Ochse vorm Berg", als hätte dir jemand diese Audrücke vorgesetzt und du musst jetzt sagen, was sie bedeuten 😉



  • Haha wow du hast wirklich deine Zeit verschwendet alles zu betrachten. Aber jetzt weiß ich, wieso du kein Detektiv bist. Wenn ihr keine Lust zu helfen habt, dann braucht ihr nicht zu kommentieren. Was ich mache in meiner Freizeit und wie ich C++ lerne, hat nichts mit euch zu tun. Und jetzt habe ich meine Zeit verschwendet, um zu antworten. 😉

    Aber für die Leute die nicht so skeptisch und sehr freundlich sind: ich danke Euch für die Hilfe bis jetzt!



  • Was bin ich froh, das ich diese Eingeschnappt-Phase hinter mir habe...


Anmelden zum Antworten