任何人都可以像我 5 岁一样向我解释变量是如何作用于函数的吗?
Can anybody explain me like i'm 5 how the variables work on a function?
所以在过去的 4 个月里,我一直在学习 C++,并且取得了很大的进步,实际上很快就非常接近学习图形了。
只有一件事我仍然有问题而且我只是不明白,那就是函数中的变量。
基本上我不知道在函数的()里面放什么变量,后面要放什么变量
我知道这取决于练习,所以我试着举个例子。
所以我想在一个函数中计算a和b的和
int calculateSum(int a, int b){
int sum;
}
那为什么我放在函数下面而不是括号里面呢?
为什么不能像这样:
int calculateSum(int a, int b, int sum){
//code
}
()
中的变量是函数的 参数 。也就是说,当它被其他代码调用时它期望的输入。 {}
中的变量仅供 在 函数中使用。
您的第一个示例很有意义 - 您可以像这样使用它:
int answer = calculateSum(1, 2);
在第二个示例中,您将传递什么作为 sum
参数的参数?这是一个毫无意义的请求——你的函数的调用者想要从你的例程中得到总和 back。
实际上一切都取决于函数的定义。例如我们可以定义一个函数如下。
int CalculateSum (int a, int b, int sum);
这个函数必须接收三个整数a、b和sum。
可以定义函数体
例如像这样:
int CalculateSum (int a, int b, int sum) {
sum = a + b;
return sum;
}
我们也可以定义函数。
int CalculateSum (int a, int b);
此函数接收两个整数 a 和 b。
函数体可以是
int CalculateSum (int a, int b) {
int sum;
sum = a + b;
return sum;
}
如果您是函数的创建者,您可以随心所欲地创建函数,但如果函数已经定义,则必须在定义开始时使用它。
当你写一个函数时,你需要把你的思想分成两个不同的角色。您有编写该函数的开发人员,我们称他们为 FuncDev,您有将调用该函数的开发人员,我们称他们为 CallDev。
当 FuncDev 编写函数时,他们需要考虑 CallDev 需要函数做什么以及在什么情况下调用它。 CallDev 在调用函数时有什么信息?他们希望该功能实际 做 或回馈什么?
在 calculateSum
的情况下,CallDev 将有两个数字,他们想要计算它们的和。而 FuncDev 只需要两个数字就可以正确地计算出一个和。所以这里每个人都同意:要调用 calculateSum
,您应该提供两个号码并取回一个号码(即这两个号码的总和)。
所有这些信息都可以在函数头中找到:
//- This function will return (or give back) an integer
//| - This function requires two integers to do its job
//v v
int calculateSum(int a, int b) {
您不需要也包括 int sum
参数,因为 A. 这不是 CallDev 在调用该函数时会有的东西。他们打电话的全部目的是首先得到一笔款项! B. 这不是 FuncDev 需要计算总和的东西。因此,您将对调用该函数的任何人施加额外条件,而不会在函数实现中获得任何东西。
此外,在函数逻辑本身的花括号内发生的一切,CallDev 永远不需要知道。 FuncDev 是否决定在 return 之前创建一个 int sum
变量来保存总和,等等……应该无关紧要。
通常,当我进行开发时,我会在编写函数之前进行函数调用。所以在你的情况下,我可能会继续思考 "Hmm, I really need the sum of two numbers here. I have two numbers onhand, it'd be nice if I could just call calculateSum(num1, num2)
and get the value I need." 所以我实际上只是编写对函数的调用并继续 1.
1.实际上,这看起来像是在适用于函数时编写测试,然后然后 编写它。但前提是一样的。我在编写函数之前定义了函数的行为、输入和输出。
所以在过去的 4 个月里,我一直在学习 C++,并且取得了很大的进步,实际上很快就非常接近学习图形了。 只有一件事我仍然有问题而且我只是不明白,那就是函数中的变量。
基本上我不知道在函数的()里面放什么变量,后面要放什么变量
我知道这取决于练习,所以我试着举个例子。
所以我想在一个函数中计算a和b的和
int calculateSum(int a, int b){
int sum;
}
那为什么我放在函数下面而不是括号里面呢? 为什么不能像这样:
int calculateSum(int a, int b, int sum){
//code
}
()
中的变量是函数的 参数 。也就是说,当它被其他代码调用时它期望的输入。 {}
中的变量仅供 在 函数中使用。
您的第一个示例很有意义 - 您可以像这样使用它:
int answer = calculateSum(1, 2);
在第二个示例中,您将传递什么作为 sum
参数的参数?这是一个毫无意义的请求——你的函数的调用者想要从你的例程中得到总和 back。
实际上一切都取决于函数的定义。例如我们可以定义一个函数如下。 int CalculateSum (int a, int b, int sum);
这个函数必须接收三个整数a、b和sum。 可以定义函数体 例如像这样:
int CalculateSum (int a, int b, int sum) {
sum = a + b;
return sum;
}
我们也可以定义函数。
int CalculateSum (int a, int b); 此函数接收两个整数 a 和 b。
函数体可以是
int CalculateSum (int a, int b) {
int sum;
sum = a + b;
return sum;
}
如果您是函数的创建者,您可以随心所欲地创建函数,但如果函数已经定义,则必须在定义开始时使用它。
当你写一个函数时,你需要把你的思想分成两个不同的角色。您有编写该函数的开发人员,我们称他们为 FuncDev,您有将调用该函数的开发人员,我们称他们为 CallDev。
当 FuncDev 编写函数时,他们需要考虑 CallDev 需要函数做什么以及在什么情况下调用它。 CallDev 在调用函数时有什么信息?他们希望该功能实际 做 或回馈什么?
在 calculateSum
的情况下,CallDev 将有两个数字,他们想要计算它们的和。而 FuncDev 只需要两个数字就可以正确地计算出一个和。所以这里每个人都同意:要调用 calculateSum
,您应该提供两个号码并取回一个号码(即这两个号码的总和)。
所有这些信息都可以在函数头中找到:
//- This function will return (or give back) an integer
//| - This function requires two integers to do its job
//v v
int calculateSum(int a, int b) {
您不需要也包括 int sum
参数,因为 A. 这不是 CallDev 在调用该函数时会有的东西。他们打电话的全部目的是首先得到一笔款项! B. 这不是 FuncDev 需要计算总和的东西。因此,您将对调用该函数的任何人施加额外条件,而不会在函数实现中获得任何东西。
此外,在函数逻辑本身的花括号内发生的一切,CallDev 永远不需要知道。 FuncDev 是否决定在 return 之前创建一个 int sum
变量来保存总和,等等……应该无关紧要。
通常,当我进行开发时,我会在编写函数之前进行函数调用。所以在你的情况下,我可能会继续思考 "Hmm, I really need the sum of two numbers here. I have two numbers onhand, it'd be nice if I could just call calculateSum(num1, num2)
and get the value I need." 所以我实际上只是编写对函数的调用并继续 1.
1.实际上,这看起来像是在适用于函数时编写测试,然后然后 编写它。但前提是一样的。我在编写函数之前定义了函数的行为、输入和输出。