Strukturen an Funktionen übergeben



  • Hallo bin noch recht neu in der C Programmierung.Darum könnt ihr mir hoffentlich helfen.
    Ich habe eine Struktur erstellt:
    typedef struct PCK_DATA
    {

    Uint8 config;
    Uint8 Usoll_1;
    Uint8 Usoll_2;
    Uint8 Isoll_1;
    Uint8 Isoll_2;

    }PckWData;
    Später in meinem Programm hab ich diese mit Werten gefüllt:

    PCK_DATA.config = 0x00;
    PCK_DATA.Usoll_1 = 0x00;
    PCK_DATA.Usoll_2 = 0x36;
    PCK_DATA.Isoll_1 = 0xFF;
    PCK_DATA.Isoll_2 = 0x20

    Nun möchte ich die mit Werten gefüllte Struktur an eine Funktion übergeben.Wie mache ich das?
    Besten Dank schon mal.



  • wenn deine structur so klein ist dann so

    PckWData yourFn(PckWData data){
        data.config = 'a';
        return data;
    }
    

    sollte sie größer sein kannst du sie auch als zeiger übergeben

    void yourFn(PckWData *data){
        data->config = 'a';
    }
    

    zu beachten ist allerdings wenn in der function ein wert der struct verändert wird, denn nach verlassen der function wird er im ersten fall gelöscht und im zweiten erhalten, daher hab ich im ersten fall auch das return mit rein 😉

    bezüglich der größe, weiß ich nicht ob es werte gibt ab denen das besonders viel sinn macht? also ich übergebs ab ca. 4 ints in der struct auf nem x86 als zeiger

    lg lolo



  • noobLolo schrieb:

    bezüglich der größe, weiß ich nicht ob es werte gibt ab denen das besonders viel sinn macht? also ich übergebs ab ca. 4 ints in der struct auf nem x86 als zeiger

    lg lolo

    Ob nun gerade besonders viel Sinn weiß ich nicht, aber doch schon Sinn ab einer Größe, die über der Größe des übergebenen Zeigers liegt.
    Also Größer sizeof(*data), bzw. sizeof(void*).


Anmelden zum Antworten