gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:33:32 25 4
gpt4 key购买 nike

我已经读过它并且我基本上明白了,但这种情况让我有点困惑。为什么我们不在 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;
}

最佳答案

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

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

关于c - 什么时候用箭头,什么时候用点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65901748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com