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 = 0x20Nun 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*).