C++ 在main()内部和外部声明用户定义函数之间的区别

C++ 在main()内部和外部声明用户定义函数之间的区别

在main函数内部和外部声明函数与全局变量和局部变量类似。当我们在main函数外部声明任何函数时,它是在全局范围内定义的,它是在全局作用域中。当我们在main函数内部定义任何函数时,它位于main函数的局部作用域内。因此,main函数外的任何函数都无法使用main函数内部的函数。

在main函数外定义的函数可以被任何函数访问和使用,无论是它在main函数内部还是在外部。

示例1

当我们在main()函数外部声明任何函数时。

C ++代码:

#include 
using namespace std;

void diff(int a, int b); // global declaration of the function
void fxn(int x, int y); // global declaration of the function
int main()
{
    int a = 5;
    int b = 3;
    fxn(a, b);
}
void fxn(int a, int b)
{
    diff(a, b);
}
void diff(int a, int b)
{
cout << "The difference  is " << a - b;
}

输出:

The difference is 2

解释:

在上面的代码中,我们定义了两个函数,这两个函数都是在main()函数外定义的。一个函数用于获取减法结果,另一个是辅助函数。辅助函数被称为diff函数。由于这两个函数都在全局作用域中,所以没有错误。我们在函数中给定了两个整数值,分别为5和3,我们得到的输出结果是2,即5-3相等于2。

示例2

当我们将函数声明在main()函数内部时。

C++代码:

#include 
using namespace std;

void fxn(int x, int y); // global declaration of the function
int main()
{
    void diff(int a, int b); // local declaration of the function
    int a = 5;
    int b = 3;
    fxn(a, b);
}
void fxn(int a, int b)
{
    diff(a, b);
}
void diff(int a, int b)
{
cout << "The difference  is " << a - b;
}

输出:

/tmp/stIpvIA8cL.cpp: In function 'void fxn(int, int)':
/tmp/stIpvIA8cL.cpp:14:9: error: 'diff' was not declared in this scope
   14 |         diff(a, b);
      |         ^~~~

解释:

在上述代码中,我们在main函数内部声明了diff函数,并通过在main函数外声明的helper函数来调用它。由于diff函数的作用域限于main()函数内部,无法在main()函数外部访问,所以我们得到了错误。

注意:当我们有两个同名的函数,一个在main函数外部声明,一个在main函数内部声明,并且它们的函数签名不同。如果我们调用全局函数,由于忽略了局部函数,可能会出现错误。

示例3

C++代码:

#include 
using namespace std;

int diff(int a ,int b)
{
int s= a-b;
return s;
}
int main()
{
    int diff(int a, int b); // local declaration of the function
    int a = 5;
    int b = 3;
cout << "The difference is "<

输出:

The difference is 2

解释:

在上面的代码中,我们有函数的本地声明,并在主函数中调用它,所以我们得到了没有任何错误的结果。我们在函数中给出了两个整数值为5和3,然后得到了输出结果为2,即等于5减3。

示例4

C++代码:

#include 
using namespace std;
int diff(); // global declaration of the function
int main()
{
    int diff(int a , int b); //local declaration of the function
    int a=5;
    int b=3;
cout<

输出:

g++ /tmp/stIpvIA8cL.cpp
/tmp/stIpvIA8cL.cpp: In function 'int main()':
/tmp/stIpvIA8cL.cpp:9:19: error: too few arguments to function 'int diff(int, int)'
9 |         cout<

解释:

在上面的代码中,我们有两种类型的diff()函数。一个diff()函数有参数,并返回两个数字之间的差异。另一个函数返回一个整数,没有任何计算。因此,带有参数的diff()函数在main()函数内部声明,它是main()函数的局部变量。另一个diff()函数在main()函数外部声明。在main()函数中,我们调用没有参数的diff()函数,因为它是全局定义的,所以我们可以在main()函数内部访问它。我们期望得到一个整数值作为答案,但是因为我们有相同的函数名,在本地声明并调用它作为全局函数,导致出现错误。

因此,由于对局部函数的忽视,我们得到了错误。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程