gpt4 book ai didi

c - 使用 & 运算符时 scanf() 中发生了什么?

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:24 25 4
gpt4 key购买 nike

我是 C 编程的新手,对以下几行代码有疑问。这发生在创建结构电影链接列表的上下文中:

struct film {
char title[TSIZE];
int rating;
struct film * next;
}

int main(void)
{
struct film * head = NULL;
struct film * prev, *current;
char input[TSIZE];

// some code ommitted

strcopy(current->title, input);

puts("Enter your rating <0-10>");

scanf("%d", &current->rating);
}

基本上我的问题是关于 strcopy() 和 scanf() 函数的。我注意到对于 strcopy,第一个参数是在指向结构的指针上使用成员访问运算符 ->。我相信 strcopy 的第一个参数应该是一个指向 char 的指针,所以当使用成员访问运算符时,即使 title 没有被声明为结构内部的指针,我们是否会得到一个指向 title 的直接指针?

我很困惑这与我们使用 & 运算符获取 current->rating 地址的 scanf() 调用有何不同。 scanf() 是获取结构指针的地址然后进行成员访问还是结构成员“rating”的地址?为什么不像 strcopy() 那样直接传入指针?

我想 &current->rating 与 &(current->rating) 之间有区别吗? &current->rating 是指针的地址(有点像指向指针的指针?)。

提前致谢。

最佳答案

当您在 C 中将数组作为函数参数传递时,编译器实际上将指针传递给数组中的第一个元素。 arrayVar&arrayVar[0]相同.所以,strcopy函数的第一个参数是指向字符数组 title 第一个元素的指针在 current 指向的结构中.

当你传递 int 时对于函数,您只是传递变量的值,而不是指向它的指针。自 scanf需要一个指针来存储值,你必须使用 &而是获取指向变量的指针。 scanf 的第二个参数是一个指向整数 rating 的指针在 current 指向的结构中.

关于c - 使用 & 运算符时 scanf() 中发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7375668/

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