我不喜欢这个,但是我有一个结构里面有近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