【问题标题】:What is "&" in "scanf("%f", &variableName);" in C programming?"scanf("%f", &variableName);" 中的 "&" 是什么在 C 编程中?
【发布时间】:2016-02-29 01:09:18
【问题描述】:

我正在学习C编程语言,因为“&”而卡住了,下面是示例代码。

int main()
{
     float degrees, radians;
     printf("Enter an angle in degrees: ");
     scanf("%f", &degrees);
     radians = 0.0174532925 * degrees;
     printf("%.2f degrees is %.2f radians.\n", degrees, radians);
     return(0);
}

请查看粗体和斜体代码。我想知道“&”有什么用。因为当我尝试运行没有“&”度数的代码时,它确实会运行,但是在生成答案时它会挂断。

感谢您的即时答复。谢谢!

【问题讨论】:

  • 不能简单解释&是什么意思...
  • 不要把return当作一个函数使用,它是一个关键字。仅在返回复杂表达式时用括号括起来并使其易于阅读。

标签: c floating-point int scanf


【解决方案1】:

& 运算符获取传递参数的地址并将指向它的指针传递给函数,这意味着在函数中更改参数的值也会更改它在调用函数中的值。

【讨论】:

    【解决方案2】:
    scanf("%f", &degrees);
    

    这里scanf() 存储价值,所以它需要一个地方来存储它们。 这是通过提供地址(在指针中)来完成的 在哪里存储值。在您的情况下,它是 degrees 变量,通过使用 &degrees,我们提供了地址。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      您可能会将 & 视为 scanf 语句中变量的“地址”。本质上, & 是 scanf 语句中的原始类型所需要的;您没有看到它在 printf 语句中使用。

      请注意,当您在 scanf 语句中使用数组时,您不需要使用 &,因为数组名称将提供隐式 &

      【讨论】:

        【解决方案4】:

        与号 (&) 是 C 地址运算符;它返回给定变量的内存地址。

        scanf 函数从控制台读取数据,对其进行解析,并将结果存储在提供的变量的内存地址中。理解 & 符号的关键是 scanf 系列函数实际上会在内存中更改作为参数提供的变量。由于我们使用的是内存中的直接变量而不是副本,因此我们需要传递该变量的内存地址——因此是与号 (&)。

        在您的示例代码中,scanf("%f", &degrees) 行可以读作“将浮点 ("%f") 值读入度数的内存地址中”。

        您可以通过在 return 语句之前添加以下代码行来查看作为参数传递给 scanf 的内存地址:printf("memory address of degrees: %p", &degrees);

        查看以下内容了解更多详情: http://see-programming.blogspot.com/2013/10/difference-between-asterisk-and.html http://beej.us/guide/bgc/output/html/multipage/scanf.html

        【讨论】:

          【解决方案5】:

          C 中的 & 表示 the value is stored in this (variable)!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-03-02
            • 1970-01-01
            • 2010-12-14
            • 1970-01-01
            • 1970-01-01
            • 2012-03-28
            • 2011-01-08
            • 2012-06-16
            相关资源
            最近更新 更多