c - C 编程中 "&"%f", &variableName);"中的 "scanf("是什么?

标签 c floating-point int scanf

我正在学习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);
}

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

感谢您立即回复。谢谢!

最佳答案

与号 (&) 是 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

关于c - C 编程中 "&"%f", &variableName);"中的 "scanf("是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33930147/

相关文章:

floating-point - PROLOG - 如何舍入 float 的小数?

C# 如何将 Environment.TickCount 转换为 HH :mm:ss:ms

c++ - multimap<vector<int>> ,char> 怎么排序呢?

c# - 查找具有相同内部表示的 float / double 的最小值/最大值

c++ - 随机浮点发生器

c# - 如何统一存储 256 位整数?

c - 强制/说服/欺骗 GCC 展开 _Longer_ 循环?

c - 编译 ipsec 工具时出错...PATH_IPSEC_H 实际上是什么意思?

c - 在 C 中使用 read() 系统调用来读取整数

c - 服务器程序卡在接受函数处