gpt4 book ai didi

c - 使用 'scanf' ,在第二个参数中使用变量或指针有什么区别?

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

scanf 的第二个参数中有一个变量或指针有什么区别。

例如:

scanf("%f",&r);

对比

scanf("%f",r);

最佳答案

当您将值传递给任何函数时,该值会在函数调用之前被复制。该函数使用副本,然后在函数返回时丢弃该副本。

scanf 需要将其结果放在某个地方,您可以在函数返回后取回它们。因此,您不会给它任何东西的任何一次性副本。相反,您告诉这些东西在哪里,这样它就可以在那里存储用户的输入。那是一个指针。简而言之:您总是将指针传递给 scanf

但是,根据值的类型,指针将以不同的表示法显示。也就是说,如果您正在扫描一个整数 i,例如,int 类型,您将必须使用 i 的地址(= 转换为指针),方法是在其前面添加一个符号:scanf("%d",&i);。而如果您正在扫描一个字符串 s,它的类型是 char*,它已经是一个指向字符缓冲区的指针(取注意类型中的尾随星号)。缓冲区的地址是 scanf 所期望的,因此不需要取消引用:scanf("%s",s);

关于c - 使用 'scanf' ,在第二个参数中使用变量或指针有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31805101/

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