我发现很难理解这个C代码

时间:2014-08-11 16:17:29

标签: c

#include <stdio.h>

void graph(int count);

int main() {
    int value;
    value = 2;
    while (value <= 64) {
        graph(value);
        printf("Value is %d\n", value);
        value = value * 2;
    }
    return (0);
}

void graph(int count) {
    int x;
    for (x = 0; x < count; x = x + 1)
        putchar('*');
    putchar('\n');
}

以上是我的代码。我正在学习C,作为初学者,我发现很难理解代码。我的问题是:

  • int count做什么?是用户定义还是内置系统?
  • 为什么我们在graph()中声明了值?它是否像我们提供的输入一样?
  • 并且在图表()或任何地方,没有计数的初始值,但为什么使用它和什么?

5 个答案:

答案 0 :(得分:4)

  

int count做什么?是用户定义还是内置系统?

int count指定函数graph采用单个参数,类型为int。这是C语言的一部分。

  

为什么我们在graph()中声明了值?它是否像我们提供的输入一样?

我不确定你的意思。输入参数count用于指定运行for循环的次数。 int xint类型的变量,只存在(范围限定)函数graph

这意味着count内的graph()将具有您的变量value在调用graph()的行中具有的值:

graph(value);
由于

行,

value从2开始

value = 2;

并且每次通过while循环加倍,直到它为64行

while (value <= 64) // Checks whether or not to end the while loop

value = value * 2; // Doubles the previous value
  

在图形()或任何地方,没有计数的初始值,但为什么使用它和什么?

xfor循环中初始化。这是它获得初始值的地方。如果你看一下

for(x=0;x<count;x=x+1)

部分

x=0

初始化for循环。通常,循环计数器将在for语句的该部分中获得其初始值。

答案 1 :(得分:2)

  

int count有什么作用?是用户定义还是内置系统?

int是由C语言定义的关键字(你甚至可以看到语法高亮显示器用蓝色绘制它,而用户定义的东西是黑色的。它用于声明变量的类型。当你做

int x;

您正在声明一个包含整数值的新变量。 Yuo可以使用其名称获取变量的值,您可以使用=运算符为变量赋值新值

x = 10

或使用++运算符

x++  //this adds one to the value of x
  

为什么我们在graph()中声明了值?它是否像我们提供的输入一样?

graph是一个函数/子例程。括号内定义的变量是子程序的参数。

  

在图形()或任何地方,没有计数的初始值,但为什么使用它和什么?

SUbroutine参数由调用子例程的任何人初始化。在这种情况下,graph(value),在主函数中。)

答案 2 :(得分:2)

一般C函数定义为:

return_type function_name(parameter_1, parameter_2, ...)
{
  local_variables

  function_logic

  return return_value
}

将参数传递给您的函数,以便在调用graph(value)时,count设置为value。

基本上,你的循环是调用graph(2),graph(4),graph(8)......它将count设置为2,4,8 ......

for循环语法是:

for(initialization; condition; increment) {
  loop_logic
}

循环体重复执行,直到条件不再为真 所以x初始化为零,递增1(x ++与x = x + 1相同),直到条件为x大于或等于count。

基本上,这意味着您的图表功能正在打印出来&#39; count&#39;数字*,后跟换行符,将光标移动到下一行。

这是您程序的输出。

Value is 2
**
Value is 4
****
Value is 8
********

等等。

我会建议在深入研究更复杂的代码之前查阅一些通用编程教程。

答案 3 :(得分:1)

  

int count有什么作用?

在第

void graph(int count)

int countcount声明为参数或类型为graph的函数int的参数。这意味着调用 graph函数的任何代码都必须提供整数参数。您可以在通话中的main功能

中看到此信息
graph(value);

调用value函数时,count中的值会复制到参数graph

  

是用户定义还是内置系统?

在这种情况下,它是用户定义的。

  

为什么我们在graph()中声明了值?它是否像我们提供的输入一样?   并且在graph()或任何地方,没有计数的初始值,但为什么使用它和什么?

变量x用于控制以下循环:

for(x=0;x<count;x=x+1)
    putchar('*');

这显示了循环元素的执行顺序:

for ( /* 1 */ x = 0; /* 2 */ x < count; /* 4 */ x = x + 1 )
  /* 3 */ putchar('*');

逻辑基本如下:

  1. 将0分配给x
  2. x中存储的值与count中传递给函数的值进行比较。如果x小于count,请转到步骤3,否则请转到步骤5.
  3. *字符写入标准输出。
  4. 将1添加到x,然后转到步骤2.
  5. 退出循环。
  6. 整个程序绘制*个字符行,每行的长度是前一行的两倍:

    **
    Value is 2
    ****
    Value is 4
    ********
    Value is 8
    ****************
    Value is 16
    ...
    

    graph函数负责绘制*个字符的每一行。 main调用graph,其中包含要绘制的字符数(graph(value)),从2个字符开始,并将该数字加倍,直到它大于64.然后调用{printf 1}}显示value变量的值(比如 快三倍)。

答案 4 :(得分:0)

1.int count从值获取参数(它是一个FUNCTION CALL-在第一次运行时值为2)    - 这是用户定义的。你可以写任何名字,如(int count / int xyz /...)

2.Yeah!它就像输入一样。在这里,我们将“值”术语赋予“2”。

3.这2将被复制到计数中。并继续执行图函数内部的函数程序,如 - ..printing'*'iterratively。

..计数的初始值只不过是你为“价值”这个词分配的值。它是2   如果您将值项分配给4,则count将取值4

Google并了解c。

中的基本函数调用

---希望你得到一些澄清---