Ich liebe das nicht, aber ich habe eine Struktur mit fast 45 Mitgliedern darin; Alle sind Zeichen oder Zeichenfelder. Das heißt, ich muss die Art optimieren, wie ich jede Struktur initialisiere. Normalerweise würde ich das gesamte Objekt in meine init_struct() -Funktion übergeben, aber ich denke, das ist nicht der beste Weg, dies zu tun.Pointer von Structs an eine Funktion in C senden
Wie würde ich einen Zeiger auf die Struktur erstellen und verwenden, um dies zu erreichen?
alte Methode wie folgt aussehen würde:
void init_struct(struct general){
...initialize members...
}
int main(){
struct general[10];
for(int i = 0 ; i < 10 ; ++i){
init_struct(general[i];
}
}
Da diese Struktur so groß ist, wie gesagt fast 45 Mitglieder im Inneren, ich denke, ein Punkt auf die Struktur einen langen Weg bei der Optimierung dieser gehen würde verarbeiten. Wie würde ich das erreichen?
Für den Fall, Sie brauchen, hier ist die typedef für meine struct
typedef struct
{
//Basically, everything we want to read from HUDL should be here...
int play_num;
char down;
char dist[3];
char ydln[4];
char gnls[3];
char hash[3];
char home[20];
char away[20];
char odk[2];
char qtr[2];
char series[3];
char result[20];
char penalty[20];
char act_cb[20]; //How do they act post-snap
char act_dl[20];
char act_lb[20];
char act_ol[20];
char act_qb[20];
char act_rb[20];
char act_saf[20];
char aln_cb[20]; //How do they align pre-snap
char aln_dl[20];
char aln_lb[20];
char aln_ol[20];
char aln_qb[20];
char aln_rb[20];
char aln_saf[20];
char aln_wr[20];
char blitz[20];
char box_cnt[3];
char saf_count[20];
char coverage[20];
char cvr_basic[20];
char def_front[20];
char mtn_def[20];
char num_rush[3];
char off_form[20];
char form_var[20];
char motion[20];
char off_pro[20];
char off_play[20];
char play_var[20];
char personnel[20];
char play_type[20];
char time[2];
char score_diff[4];
char field_zone[2];
char dd_type[2];
char form_strength[2];
} HUDL; // MAXIMUM of 63 Members
lesen fast jede [gute Anfänger Buch] (http://stackoverflow.com/ Fragen/562303/the-definitive-c-Buch-Leitfaden-und-Liste). Sie sollten Kapitel zur Verwendung von Zeigern haben, einschließlich Zeigern zu Strukturen. –
Siehe Antwort von SPlatten und notiere die Verwendung von Zeigern ('*') und die Adresse von ('&') Operatoren. Und lies das Buch. –
Ihre alte Funktion, d. H. 'Void init_struct (struct general) {' ist falsch und kann nicht verwendet werden – 4386427