【发布时间】:2019-06-24 07:17:27
【问题描述】:
我不明白什么时候用箭头,什么时候用点。
例如,
void scrivi_file(FILE *output, anagrafe *vect, anagrafe **max, int dim_vect){
int i;
*max = malloc(1 * sizeof(anagrafe));
max[0] = &vect[0];
for(i=1; i<dim_vect; i++)
if(vect[i].media > max[0]->media)
max[0] = &vect[i];
fprintf(output, "%s %s %f", max[0]->cognome, max[0]->nome, (*max)[0].media);
}
为什么最后一个最大值是点,前两个是箭头?我不明白。星号和 & 也很混乱。
【问题讨论】:
-
(*p).x与p->x相同,如果p是指向具有名为x的字段的结构的指针。需要知道的就这么多。 -
@EugeneSh。为什么我也不能将箭头用于 vect?它也是一个指针,不是吗?
-
你可以。但是
vect不是指向单个结构的指针,而是指向这些结构的数组。所以你需要做类似(vect+i)->media而不是vect[i].media。那可读性会降低。 (这里值得一提的是,p[i]与*(p+i)相同,如果p是一个指针..)
标签: c