区别仅在于你可以用它们做什么?
另外,如何将函数中的变量结果传递给另一个函数?最近,我不得不这样做,但变量没有将父函数中的代码传递给另一个函数。
void add(int a, int b)
VS
void add(int a)
int b;
a+b;
用于将变量的结果从父函数传递给函数:
void add(int a, int b, double c)
a+b=c;
void divide(double c, int d, double e)
c / d = e;
答案 0 :(得分:1)
区别在于变量的scope。函数体中声明的变量将具有block scope。标题中声明的变量将具有file scope。
答案 1 :(得分:1)
这两个功能之间存在很大差异(我添加了一些缺失的细节)
void add(int a, int b)
{
int c = a + b;
}
void add(int a)
{
int b = 10;
int c = a + b;
}
在第一种情况下,您可以调用传递两个参数的函数。例如
add( 2, 5 );
并且在函数变量c内部将具有取决于两个参数的值(如果a = 2,b = 5然后c = 7)。
在第二种情况下,您可以调用仅传递一个参数的函数
add( 2 );
因此,如果指定为参数2,那么您将得到c将等于12.您无法更改调用该函数的b的值,因为您无权访问它。
考虑到此代码不会被编译
void add(int a, int b, double c)
{
a + b = c;
}
您不能指定表达式a + b
如果需要将结果从一个函数传递给另一个函数,那么可以通过函数返回对象传递它。例如,在第一个函数中将返回类型从void
更改为int
int add(int a, int b)
{
int c = a + b;
return c;
}
在这种情况下,您可以将结果传递给“父”函数。例如
#include <iostream>
int add(int a, int b)
{
int c = a + b;
return c;
}
void add(int a, int b, double c)
{
std::cout << a + b + c;
}
int main()
{
int x = 10;
int y = 20;
int z = 30;
add( x, y, add( x, z ) )'
}
输出将等于70(x + y +(x + z))。在这个例子中,有两个带名称的重载函数,其中一个函数有两个参数,另一个函数有三个参数。
此外,您可以使用通过使用指针引用传递的参数来获取函数结果。
例如
#include <iostream>
void add(int a, int b, double &c)
{
c = a + b;
}
int main()
{
int x = 10;
int y = 20;
int z;
add( x, y, z ) );
std::cout << "z = " << z << std::endl;
}
结果将是z = 30。
如果要使用poinet,则代码将显示为
#include <iostream>
void add(int a, int b, double *c)
{
*c = a + b;
}
int main()
{
int x = 10;
int y = 20;
int z;
add( x, y, &z ) );
std::cout << "z = " << z << std::endl;
}
结果与30相同。
答案 2 :(得分:0)
void add(int a, int b, double c)
a+b=c;
void divide(double c, int d, double e)
c / d = e;
这段代码完全是胡说八道。让我尝试为你解决它:
int add(int a, int b)
{
return a + b;
}
double divide(double c, int d)
{
return c / d;
}
不确定为什么会将d
限制为int
。但是,嘿,当我只能使用好的+
和/
来开始时,我甚至没有看到添加和划分函数的重点:)
答案 3 :(得分:0)
如果在标题中声明该函数,则可以在包含该标头的所有源文件中访问该函数。这可以使const,static或extern。如果您将其设为extern,请不要忘记您还需要在其中一个源文件中定义变量:
// header.h
#pragma once
int a; //these variables will be usable in all the source files that include this header
static const int b = 5; //this is a const static variable, you cannot assign a new value to it.
extern int c; // this is extern, must be defined in a soruce file
int fun(int); // and this is a function taking an int, returning another int
和源文件:
#include "header.h"
int fun(int g)
{
return g + 1;
}
int c = 7;
int main()
{
a = 5; // assign a value to it
fun(a); // this is how you use it
}
如果初始化(假设初始化意味着声明)函数中的变量,则只能从该函数访问该变量。
关于函数中变量对另一个函数的结果&#34;可能你想创建一个带参数的函数。请参阅上面的代码。