我不喜歡這個,但是我有一個結構裏面有近45個成員;全部是字符或字符數組。這就是說,我將需要優化我初始化每個結構的方式。通常,我會將整個對象傳遞到我的init_struct()函數中,但是我覺得這不是實現此目的的最佳方式。發送結構指針到函數C
我將如何創建並使用指向結構體的指針來完成此操作?
舊方法會是這個樣子:
void init_struct(struct general){
...initialize members...
}
int main(){
struct general[10];
for(int i = 0 ; i < 10 ; ++i){
init_struct(general[i];
}
}
由於這個結構是如此之大,就像我說的裏面將近45個成員,我認爲一個指向結構會很長的路要走優化這個處理。我將如何實現這一目標?
只需在您需要的情況下,這裏是我的結構typedef的
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
閱讀幾乎任何[好初學者的書(http://stackoverflow.com/問題/ 562303 /對,最終-C-書指南和列表)。他們應該有關於如何使用指針的章節,包括指向結構的指針。 –
請參閱SPlatten的答案,並注意(&)運算符的指針('*')和地址的用法。並閱讀本書。 –
您的舊函數,即'void init_struct(struct general){'是錯誤的,不能是使用的那個 – 4386427