sehe bei * und & nicht mehr so ganz durch



  • Hi Leute, hier mein Problem

    void test2(int& a) {
       ...
      }
    
    void test1(int *a) {
       ...
      }
    
    void main() {
      int a;
      }
    

    Frage: Wie übergebe ich das a an test1?
    Antwort: test1(&a); Oder??

    Frage: Wie übergebe ich jetzt das a aus test1 an test2?
    Antwort: ????

    Stehe gerade ein bißchen auf dem Schlauch...
    Danke für Hinweise!

    LIBS



  • void main() { 
    int a;
    
    test1(&a);
    test2(a); 
    }
    

    Bei Referenzparameter werden wie "normale Parameter" initalisiert mit dem Unterschied, dass sie nur 32bit gross sind!;
    Deine Test2-Funktion erwartet dagegen ein Verweis auf ein Speicherstelle die man mit &variable angibt.

    Beide Funktionen zeigen auf int a, deswegen verändern beide Funktionen int a.



  • Ok, geht auch &(*a)? Scheint aber etwas umständlich ... 🙂
    Vielleicht kann jemand nochmal kurz den unterschied zwischen * und & zusammenfassen, wr doch auch ein gutes Thema für die FAQ!

    LIBS



  • Ok, geht auch test2(&(*a))? Scheint aber etwas umständlich ... 🙂
    Vielleicht kann jemand nochmal kurz den unterschied zwischen * und & zusammenfassen, wr doch auch ein gutes Thema für die FAQ!

    LIBS



  • #include "stdafx.h"
    #include "iostream.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int i = 2;
    	int *pi = &i;
    	int &ri= i;
    
    	cout << i << endl;
    
    	cout << ri << endl;
    
    	// Dereferenzierung
    	// bedeutet: Verwende die Variable auf die gezeigt wird. Also den Wert von i
    
    	cout << *pi << endl;
    
    	cout <<&(*pi) << endl;
    	cout << pi << endl;
    
    	int a;
    	cin >> a;
    	return 0;
    }
    

Anmelden zum Antworten