gpt4 book ai didi

c - 我在哪里声明 x 和 y 以使这个 c 代码工作?

转载 作者:太空宇宙 更新时间:2023-11-04 05:44:48 26 4
gpt4 key购买 nike

我有:

 #include <stdio.h>

int sum ( int x, int y );

main ()
{
int theSum = sum (10, 11);
printf ( "Sum of %i and %i is: %i\n", x, y, theSum );
}

int sum ( int x, int y )
{
return x + y;
}

但是,当我编译并运行时它说 x 和 y 未声明?非常感谢任何帮助。谢谢

最佳答案

在第三行中,您所做的就是声明一个函数 sum,它有两个参数,均为整数,分别称为 xy。您还没有声明任何变量。这些参数只能在函数本身内部引用。下面是一个简化的过程,可以在这个阶段帮助你,但你应该尝试阅读一本基本的编程书籍。 Kernighan 和 Ritchie 的“The C Programming Language”是一个很好的起点。

变量 是您通过名称引用的内存块。在您的程序生命周期中,它们可以采用任何值(它们的类型)——因此得名“变量”。在使用它们之前必须声明它们;你通过告诉编译器他们的类型和他们的名字来做到这一点。 int a 的意思是“给我保留一 block 足够大的内存来容纳任何整数,让我稍后用名称 a 引用它”。您可以为其赋值:a = 10,您可以使用它:a + 20

您需要了解参数和变量之间的区别才能了解此处发生的情况。函数的参数基本上是仅在该函数的生命周期内存在的变量。这是您的总和:

int sum(int x, int y) {
return x + y;
}

注意顶行看起来就像一个变量声明 int x。那是因为它是。 xy 是您可以在函数中使用的变量。

您通过传入值调用sum。实际上,编译器将函数中的 xy 替换为您传入的值。在您的情况下,您传递的是 literals : 10 和 11。当程序到达对 sum 的调用时,参数 xy 取值 10 和 11,因此return 变为 return 10 + 11; 这当然是 21。

请记住,参数 xy 仅存在于该函数中。您只能在您的函数中引用它们。为什么?因为每一对花括号 {} 都定义了一个 scope,并且在该范围内声明的任何内容都只能在该范围内使用。这包括变量和参数。

所以,这是一个更完整的例子。我更改了字母,以便您可以看到使用变量和参数的不同方式:

#include <stdio.h>

int sum ( int x, int y );

main ()
{
/* We declare our variables */
int a;
int b;

/* We assign values to them */
a = 10;
b = 11;

/* We pass them as parameters to your sum function */
int theSum = sum (a, b);
/* And we use them as parameters again, in a call to the printf function */
printf ( "Sum of %i and %i is: %i\n", a, b, theSum );
}

int sum ( int x, int y )
{
return x + y;
}

关于c - 我在哪里声明 x 和 y 以使这个 c 代码工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8578416/

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