【发布时间】:2021-01-26 12:54:13
【问题描述】:
我已经读过它并且我基本上明白了,但这种情况让我有点困惑。为什么我们不在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;
}
【问题讨论】:
-
阅读Modern C 并查看this C reference。如果您将
g[i].author替换为g[i]->author,您的代码将无法编译。将GCC 用作gcc -Wall -Wextra -g