我读过它并且我大部分都明白它,但是这种情况让我有点困惑。我们为什么不使用鼠标操作->的scanf?我知道点用于对象,箭头用于指针,但在这里,g是指向结构的指针。
DOCUMENT *take(int *pn){
DOCUMENT *g;
printf("How much documents? ");
scanf("%d", pn);
g = (DOCUMENT *)calloc(*pn, sizeof(DOCUMENT));
for (int i = 0; i < *pn; i++)
{
printf("Type in author, name of document and number of pages: ");
scanf("%s %s %d", g[i].author, g[i].name, &g[i].s );
}
return g;
}
Run Code Online (Sandbox Code Playgroud)
数组索引运算符[]内置了一个解引用。
g[i]与 完全相同*(g + i)。Sog[i]指的是 a DOCUMENT,而不是 a DOCUMENT *,因此您使用成员访问运算符.而不是指向成员的指针运算符->。