Pointer zeiger und ausgelagerte funktionen :>



  • erstmal hallo, mein erster post hier 🙂

    ich habe ein verständnisproblem

    hier mal der code arg gestutzt sonst wirds unübersichtlich..
    der code ist ein muster von Zacwire zum auslesen von Zacwire xD
    es geht dabei um einen temperatursensor...aber das ist für mein problem nicht von belang..
    ich verstehe nicht so recht was es mit (&temperatur) und (uint16_t *temp_value16) aufsich hat
    oder kurz wie übergibt die funktion gettsictemp ihr ergebnis?

    ich weiß das ich das mal konnte aber meine c kenntnisse sind etwas eingestaubt 😞

    uint8_t getTSicTemp (uint16_t *temp_value16) 
    {
    uint16_t Temperature;
    *temp_value16 = Temperature;
    }
    
    main
    {
    volatile uint16_t temperatur;
    returnvalue = getTSicTemp(&temperatur);  
    }
    

    gruß ich hoffe ihr könnt mir helfen 🙂



  • Hallo,
    die Funktion schreibt den Wert an die Speicherstelle, die durch temp_value16 adressiert wird - hier ist es die Adresse von temperatur.

    Gruß,
    B.B.



  • das heißt, &temperatur übergibt die adresse und *temp_value16 ist dann der zeiger der auf diese adresse zeigt?



  • &temperatur ist ne adresse und temp_value16 ein Zeiger, der diese speichert.
    Hinter &temperatur und temp_value16 steckt beim Aufruf der Funktion der gleiche Wert.
    Die Werte kannst du dir anzeigen lassen:

    void func( int* temp_value )
    {
    	printf ("%p\n", temp_value );
    }
    
    int main() 
    { 
    	int temperatur;
    	printf ("%p\n", &temperatur );
    	func (&temperatur);
    	return 0; 
    }
    

Anmelden zum Antworten