【发布时间】:2017-09-05 13:05:06
【问题描述】:
我不喜欢这个,但我有一个内部有近 45 个成员的结构;都是字符或字符数组。也就是说,我需要优化初始化每个结构的方式。通常,我会将整个对象传递给我的 init_struct() 函数,但我觉得这不是最好的方法。
我将如何创建和使用指向结构的指针来完成此操作?
旧方法看起来像这样:
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
【问题讨论】:
-
阅读任何good beginners book。他们应该有关于如何使用指针的章节,包括指向结构的指针。
-
查看 SPlatten 的回答并注意指针 (
*) 和 (&) 运算符的地址的使用。看书。 -
你的旧函数,即
void init_struct(struct general){是错误的,不能是使用的那个 -
您命名和分组成员的方式表明可能有一些较小的结构试图退出。从一些小结构开始然后使用它们构建下一个级别并不罕见。除非
ydln和gnls是问题领域中众所周知的术语,否则我会尝试使用一些更易于阅读的名称。 -
了解指向结构和指针数组的指针。
标签: c function pointers struct