【问题标题】:address passing in scanf but not in printf [duplicate]传入scanf但不在printf中的地址[重复]
【发布时间】:2012-08-24 03:24:01
【问题描述】:

可能重复:
Why scanf must take the address of operator

为什么我们在 printf() 的情况下传递变量,而在 scanf() 的情况下传递变量的地址? 为什么要在scanf中传递地址

【问题讨论】:

    标签: c printf scanf


    【解决方案1】:

    why to use '&' in scanf( ) but not in printf( )

    'printf'()' 只需要这些值就可以输出它们。 'scanf()' 存储值,所以它需要一个地方来存储它们。 这是通过提供地址(在指针中)来完成的 在哪里存储值。

    【讨论】:

      【解决方案2】:

      使用 scanf 您希望被调用者修改变量,这就是您通过引用传递它的原因,如果您像使用 scanf 一样按值传递它,您将无法访问变量地址来修改其内容。

      【讨论】:

      • scanf 需要指针而不是引用
      • @AdrianCornish,C++ 意义上的引用在 C 中不存在。
      • @Chris 我知道 - 我的观点完全正确:-)
      • 在 C 中,“按引用传递”的意思是“传递对象的地址”。由于该问题未标记为 C++,因此 C++ 将什么称为引用(或 C++ 中的“引用”表示什么)确实无关。 “通过引用传递”一词早于 C++。
      • C 没有定义“参考”这个词。在这里,它纯粹是在英语意义上使用的。就像在谈论执行引用计数的 C 程序时可以使用它一样。这是完全合理的用法; “参考”是另一种语言中专门定义的技术术语这一事实无关紧要。
      猜你喜欢
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2021-12-04
      • 2017-07-25
      相关资源
      最近更新 更多