C语言中函数返回什么类型的变量哪些可以是临时,哪些必须是静态或全局

如题所述

这要看具体的使用情景了:
比如说我现在在别人家做客,要喝水,拿一次性杯子,临时的,喝完就扔
但是我自己在家喝水和出去旅游,需要同一个杯子,就是静态的,出门和在家都能用,但是不能同时用

简单来说,临时变量就是不需要跨函数、跨线程和进程的时候使用,作用范围比较小,但是使用频率最高,不需要考虑多线程安全
静态变量可以在函数内定义,但是共用的,可以被更改和调用,程序不死则一直存在
全局变量与静态变量类似,但是要定义在所有函数以外,需要小心被多线程更改

我语言有点杂乱,看一下摘抄吧

静态局部变量属于静态存储方式,它具有以下特点:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符。
(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

参考资料:http://baike.baidu.com/view/675642.htm

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-31
c语言中,对于函数调用,调用前参数的值要临时存储在堆栈区,存储的值是调用时刻
参数的取值,函数使用和修改它们都是操作堆栈中的这些值,函数返回时,堆栈中的
这些临时开设的参数变量会被舍弃,所以这些值无法直接返回到主程序(实际上有一种
函数参数的写法可以返回,但比较特殊)。
但是,如果传入函数的参数中有指针型的,而函数又用指针型参数(如数组指针)来修
改它指向的存储区时,这些存储区由于不是开在堆栈的,所以在函数返回时修改有效。
使用静态数据是这样情形:如果这个静态数据是开设在函数内的,这个变量一般会记录
调用函数的状态,比如记录调用的次数,由于是静态的变量,它在退出函数时不会被
丢掉,而会一直保存着,就拿记录调用次数来说,函数可以知道这是调用者第几次调
用自己,而第一次调用可能需要做一些初始化工作。
全局变量的使用场合:变量在许多函数中都要用到,全局有效,一呼百应,而且在函数
中可以控制和修改这个变量的状态,这就不必通过参数传递;另一种情况是数组变量尺
寸过大,比如存储图象、语音的缓冲区,并且使用频繁,就不需要通过参数传递占用堆
栈空间和反复压栈、出栈耗费CPU时间了。本回答被提问者和网友采纳
第2个回答  2013-01-31
返回什么类型是由函数名前面的返回关键字决定的
相似回答