问一下C++的局部函数和全局函数是什么意思?

局部函数和全局函数是什么意思呢?什么时候才在子函数的最后用个return?

#include <iostream>
using namespace std;

int m=8;

void function()
{
int n=5;
cout<<m<<endl;
}

int main()
{
int a=10;
cout<<a<<endl;
function();
cout<<m<<endl;
return 1;
}

首先介绍一下变量吧,静态变量等就不说了,只说比较一般常见的变量
变量,都是有其生命周期的,像人一样出生,死亡
在一个函数里声明的变量,声明的时候"出生"了,这个函数结束后它也跟着死亡了
而main()函数,它也是一个函数,但是是最主要的函数,因此叫main
一个程序执行的过程,就是从main()的第一行代码执行到最后一行代码

我们现在假设有个光标指着正在运行的那一行代码,现在演示一下程序运行的过程
总是从main()开始的
main()里4行代码,
第一行a"出生"了(执行完最后一行return 1;则变量a的生命结束了)
第二行把a的值输出
第二行执行function()
1.现在光标跳到function()函数的第一行int n=5;(局部变量n出生了,并且值为5)
2.继续执行下一行代码cout<<m<<endl;至此function()函数里的代码执行完毕了,这个函数被用完了,这个函数里的局部变量n现在也死掉了(不存在了)
光标跳回到main()函数里,
继续执行下一行cout<<a<<endl;把a的值输出
下一行,把全局变量m的值输出
再执行下一行return 1;
至此main()函数也执行完毕,那么main()里的变量a也会被销毁(可以看做是main函数里的局部变量,main函数运行完了,这个变量也要消失了)
这就是程序运行的过程,就是一条一条执行main函数的语句,这过程中可能会跳到别的地方去
总结:a是main()函数里的变量,只在main里有效,且寿命和main()函数是一致的,n是function函数里的变量,只在function函数里有效,
如在main函数里操作n,或者在function函数里操作a,都是错误的,而m被放在所有函数的外面,
它是全局变量,不是属于某个函数的,所有函数都可以操作它,程序运行起来它就诞生,程序关闭了它消亡

至于子函数是否需要返回值,则完全取决于自己的需要,看下面的程序,俩对比着看

-----------------------
函数的int function1(int n),在main里执行int b=function1(a)这句话时,从main()里跳到function1()函数里,
并且function1()里产生了一个局部变量n,接受了a的值5,现在function1()函数里有个局部变量n=5;最后把值25return了回去,
25赋值给main函数里的b;

#include <iostream>
using namespace std;

int function1(int n)
{
return n*n;
}

int main()
{
int a=5;
int b=function1(a);
cout<<b<<endl;
return 1;
}
--------------------
函数void function2(int &n),&是引用,就记住只要加这个符号,那么现在n不再是一个拷贝(一个临时的局部变量),而代表着原来的数
那么main里执行function2(a);现在n代表的a本身(不是a的一个拷贝),在function2()里操作n,就是在操作main里面的a,现在n=n*n.
那么就是a=a*a,main里面的a已经变成了25,直接输出就可以了,不需要像第一个函数那样有返回值

#include <iostream>
using namespace std;

void function2(int &n)
{
n=n*n;
}

int main()
{
int a=5;
function2(a);
cout<<a<<endl;
return 1;
}
-----------------------
子函数需不需要参数,是要声明为void还是有返回值的某种类型如int,都是在了解变量的作用域(活动范围,在什么地方有效)的基础上,
完全是根据自己的需要来确定的. 再对比着看俩程序体会一下,

#include <iostream>
using namespace std;

int a=8;

void function2()
{
a=a*a;
}

int main()
{
cout<<a<<endl; //输出8
function2();
cout<<a<<endl; //a的值已经是64了,输出64;
return 1;
}
---------------------------
#include <iostream>
using namespace std;

int a=8;

int function2()
{
return a*a;
}

int main()
{
cout<<a<<endl; //输出8
cout<<function2()<<endl; //a的值仍然是8,但是function2()得返回值是a*a,输出64;
return 1;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-15
在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能用它们,在此函数以外不能使用这些变量的,这称为“局部变量”。与之相对,在函数之外定义的变量称为外部变量,外部变量是全局变量。>>>>本人为大一学生,刚接触C语言,以上回答摘抄于教材,希望对你有所帮助。本回答被网友采纳
第2个回答  2010-03-04
局部函数是想在类里面的函数,只有这个类才能用它,全局的就像C风格的函数
第3个回答  2017-12-28
return是返回值的意思,函数被调用时执行到return会对调用它的地方返回一个值
相似回答