Funktionsptr: Parameterübergabe



  • Moinsen

    hab eine Frage zum Thema Funktions-Pointer:

    void UpdateFunction (struct Text *p, int a)
    
    struct StringStr { 
    
    	unsigned int	Text; 
    	void			*Ptr; 
    };
    

    Funktionspointer:

    StringStr->Ptr = (void *) UpdateFunction;
    

    Meine Frage ist, wie übergebe ich die beiden Parameter der UpdateFunction, wenn ich den Funktionspointer aufrufe?

    Ist es auch möglich, dass die UpdateFunction einen Rückgabewert hat?

    short UpdateFunction (struct Text *p, int a)
    
    StringStr->Ptr = (void *) UpdateFunction;
    

    und dann im Code:

    result = StringStr->Ptr;
    

    wobei result ein short Wert ist.

    derTim



  • void UpdateFunction (struct Text *p, int a)
    {}
    
    struct StringStr {
    
        unsigned int    Text;
        void (*Ptr) (struct Text *p, int a);
    };
    
    struct StringStr pUpdate;
    pUpdate.Ptr = &UpdateFunction;
    
    struct Text *param1;
    pUpdate.Ptr( param1, 10 ); // funktions aufruff
    


  • 😕

    short UpdateFunction (struct StringStr *p, int a)  
    {
    	// ...
    	return (short) a;
    }
    struct StringStr {
    
        unsigned int    Text;
        void            *Ptr;
    };  
    
    int main()
    {
    	struct StringStr  xyz;
    	xyz.Ptr = NULL;
    	xyz.Text = 1111;
    
    	short(*ptr)(struct StringStr *p, int a) = UpdateFunction;
    
    	ptr(&xyz, 4711); // Funktionsaufruf mittel Funktonszeiger
    
    	return 0;
    }
    

Anmelden zum Antworten