以下の機能で何が違うのか、簡単に説明してもらえますか?
void f1(data_t **d)
{
for (int i=0; i<MAXSIZE; i++)
{
(*d)[i].ival = i;
}
}
void f2(data_t **d)
{
for (int i=0; i<MAXSIZE; i++)
{
(*d)->ival = i;
(*d)++
}
}
void f3(data_t *d)
{
for (int i = 0; i<MAXSIZE; i++)
{
d->ival = i;
d++;
}
}
void f4(data_t *d)
{
for (int i = 0; i<MAXSIZE; i++)
{
d[i].ival = i;
}
}
特に f2 で何が違うのか。しかし、それぞれで明らかに異なることが起こっています。
f1 と f3 は同じことをします (ただし、異なる)。f2 は完全に失敗し、f4 はバグがあります (この例では機能しますが、他の値を他のポインター (char *) に入れようとすると、文字列がおかしくなります。)