什么时候用箭头,什么时候用点?

qu4*_*izz 3 c struct pointers

我读过它并且我大部分都明白它,但是这种情况让我有点困惑。我们为什么不使用鼠标操作->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)

dbu*_*ush 6

数组索引运算符[]内置了一个解引用。

g[i]与 完全相同*(g + i)。Sog[i]指的是 a DOCUMENT,而不是 a DOCUMENT *,因此您使用成员访问运算符.而不是指向成员的指针运算符->