📜  在 main() 内部和在 main() 外部声明用户定义函数的区别

📅  最后修改于: 2021-09-27 15:37:05             🧑  作者: Mango

在main()函数外的main()内的用户定义函数的声明类似,局部和全局变量,即声明当我们宣布主内的函数,它是在本地范围main()和该函数可以在 main() 中使用,而 main() 之外的任何函数都无法访问 main() 本地的函数。
在 main() 之外声明的函数是一个全局声明,可以被 main()函数内外的任何函数访问。

让我们看看main() 内外的函数声明有什么不同

1. 在 main() 之外(全局范围)——
当 sum()函数在 main() 之外声明时,它被赋予全局访问权限,因此 sum() 和 caller() 是全局范围内的函数,当 caller() 调用它可以访问的 sum()函数并且没有错误发生。

C++
#include 
using namespace std;
// Global declarations 
void sum(int m, int n);
void caller(int a, int b);
int main()
{
    int a = 5;
    int b = 5;
    caller(a, b);
}
void caller(int a, int b)
{
    // Calling sum function which was global and declared
    // outside main()
    sum(a, b);
}
void sum(int a, int b) 
{
  cout << "The sum is " << a + b; 
}


C++
#include 
using namespace std;
// Global caller function
void caller(int a, int b);
int main()
{
    void sum(int m, int n);
    int a = 5;
    int b = 5;
    caller(a, b);
}
void caller(int a, int b)
{ // Calling sum function which is local to main()
  sum(a, b); 
}
void sum(int a, int b) 
{
  cout << "The sum is " << a + b;
}


C++
#include 
using namespace std;
  
int sum(int m ,int n)
{
  int s= m+n;
  return s;
}
int main()
{
    // Local declaration
    int sum(int a, int b);
    int a = 5;
    int b = 5;
    cout << "The sum is "<


C++
#include 
using namespace std;
// Global declaration
int sum();
int main()
{
  // local declaration 
    int sum(int m , int n);
    int a=5;
    int b=6;
    cout<


输出
The sum is 10

2. 在 main() 内部(本地作用域)——
当在 main() 内部声明 sum()函数,它是 main() 本地的,并且 main() 之外的任何函数都无法访问,因此当 main()函数调用 caller()函数,它是全局的,并且当caller()函数调用 sum()函数,它是 main() 本地的 caller()函数无法访问 sum()函数,因此我们得到错误“’sum’ 未在此范围内声明”

C++

#include 
using namespace std;
// Global caller function
void caller(int a, int b);
int main()
{
    void sum(int m, int n);
    int a = 5;
    int b = 5;
    caller(a, b);
}
void caller(int a, int b)
{ // Calling sum function which is local to main()
  sum(a, b); 
}
void sum(int a, int b) 
{
  cout << "The sum is " << a + b;
}

输出:

It gives error because the sum is local to main()

注意 –代码中的错误是为了知道 main() 中的函数声明发生了什么问题
但也有一些模棱两可的情况发生。如果我们使用相同的名称内外主要申报功能,它们分别是:假设,如果我们宣布与外界的主要和函数参数的函数无主内的参数()具有相同的名称,那么如果我们调用与函数同名带参数,不带参数的局部函数被调用,我们得到参数不足的错误,因为在 main()函数之外声明的全局函数被忽略了。
让我们看看上面代码中的例子:

简单的声明——
这不会导致任何歧义,因为 main() 本地函数本身接受 2 个参数,因此,当我们调用函数,该函数被调用。

C++

#include 
using namespace std;
  
int sum(int m ,int n)
{
  int s= m+n;
  return s;
}
int main()
{
    // Local declaration
    int sum(int a, int b);
    int a = 5;
    int b = 5;
    cout << "The sum is "<
输出
10

当一个具有相同名称的函数但一个没有参数的局部函数和一个有参数的全局函数时。

C++

#include 
using namespace std;
// Global declaration
int sum();
int main()
{
  // local declaration 
    int sum(int m , int n);
    int a=5;
    int b=6;
    cout<

输出 –

Error occurs since function sum() which is local to main() has two arguments

在这种情况下,我们会得到一个参数不足的错误,因为 main() 中的函数只被考虑并且需要两个参数, 但是,仍然有一个没有全局声明参数的必需函数,但它被忽略了。