有人可以简要解释一下以下函数中发生的不同情况吗?
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 *)时,字符串最终变得奇怪。)