问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言中的“局部变量”是什么意思?

发布网友 发布时间:2022-03-22 08:37

我来回答

5个回答

热心网友 时间:2022-03-22 10:07

C语言全局变量和局部变量
引子---
? ?? ???变量可以在程序中三个地方说明: 函数内部、函数的参数定义中或所有的函数外部。根据所定义位置的不同, 变量可分为局部变量、形式参数和全程变量。从空间角度来看,变量可以分为全局变量和局部变量,而从时间角度来分的 可以有静态存储变量和动态存储变量之分。

一。全局变量和局部变量

1。局部变量

他是 指在函数内部定义的变量 作用域为定义局部变量的函数 也就是说他只能在定义他的函数中使用

最值得注意的是 只有在程序执行到定义他的模块时才能生成,一旦执行退出该模块则起变量消失

eg.

func ()

{
? ?int x;? ?局部变量x的作用域 很明确
? ?......
}

2。全局变量

在程序执行的过程中一直有效

eg.

int x=1;

func ()

{
? ?x=x+1;

}

func1 ()

{
??x=x-1;

}

main ()

{

}
由此不难看出整型x的作用范围

对于全局变量 如果在定义的时候不做初始化 则系统将自动为起赋值 数值型为0

字符型为空'\0'

全局变量的弊端 增加内存开销 降低函数的通用性

定义全局变量时 理想的位置是在文件的开头 当这些函数以及同一个程序中的其他源程序文件中的某些函数需要使用该全局变量时 在函数内部对该变量使用extern 加以说明 说明他是外部的

(这里还要做详细的讲解)

eg.

main ()

{
extern int a,b;
printf ("mIn is %d\n",min(a,b));
}

int a=1,b=2;
int min (x,y)
int x,y;
{
int z;
z=x<y?x:y;
return(z);
}
我还要说明的是 对外部变量的说明和对全局变量的定义不是一回事

对外部变量的说明 只是声明该变量是在外部定义过的一个全局变量 在这里引用 而对全局变量的定义则是要对起分配存储单元的

一个全局变量只能定义一次 可是却可以多次引用

*** 在同一源文件中,全局变量和局部变量同名时,在局部变量的作用域内,全局变量不起作用的。

二。静态存储变量和动态存储变量

对于程序运行期间根据需要进行临时动态分配存储空间的变量 为动态存储变量

对于那些程序运行期间永久占用固定内存的变量 称为静态存储变量

还要说明的是 程序的指令代码是存放在程序代码区的 静态存储变量是存放在静态数据区的 包括全局变量等 而程序中的动态存储变量存放在动态数据区 如函数的形参以及函数调用时的返回地址等

三。C语言中的变量存储分类指定
? ?
? ? auto
? ? auto称为自动变量 如果函数不做其他说明的话 均为自动变量

? ? static
? ? static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。
? ? 1. 静态局部变量
? ?

? ???它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它函数使用, 当再次进入该函数时, 将保存上次的结果。其它与局部变量一样。
? ?

? ? 2. 静态全程变量
? ?

? ???Turbo C2.0允许将大型程序分成若干独立模块文件分别编译, 然后将所有模块的目标文件连接在一起, 从而提高编译速度, 同时也便于软件的管理和维护。静态全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与全程变量的区别是: 全程变量可以再说明为外部变量(extern), 被其它源文件使用, 而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用。
? ?
? ?
? ? extern
? ? extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外, 还要被其它文件使用。因此,? ?必须将全程变量通知每一个程序模块文件,? ?此时可用extern来说明。

eg.
? ?? ???文件1为file1.c? ?? ?? ?? ?? ?? ?文件2为file2.c
? ? int i, j;/*定义全程变量*/? ?? ???extern int i, j;/*说明将i, j从
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???文件1中复制过来*/
? ? char c;? ?? ?? ?? ?? ?? ?? ?? ???extern char c; /*将c复制过来*/
? ? void func1(int k);? ?? ?? ?? ?? ?func2()? ?? ???/*用户定义函数*/
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? {
? ? main()? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?static float k;/*定义静态变量*/
? ? {? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???i=j*5/100;
? ?? ?? ? func1(20);/*调用函数*/? ?? ???k=i/1.5;
? ?? ?? ? func2();? ?? ?? ?? ?? ?? ?? ?? ?? ?.
? ?? ?? ? .? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? .
? ?? ?? ? .? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? .
? ?? ?? ? .? ?? ?? ?? ?? ?? ?? ?? ?? ? }
? ???}
? ???func1(int k) /*用户定义函数*/
? ???{
? ?? ?? ? j=k*100;
? ???}

? ? 对于以上两个文件file1.c和file2.c, 用Turbo C2.0的集成开发环境进行编译
连接时, 首先应建立一个.prj的文件。例如file.prj, 该文件内容如下:
? ???file1.c
? ???file2.c
? ? 然后将file.prj的文件名写入主菜单Project中的Project Name项中。 再用F9
编译连接, 就可产生一个文件名为fioe.exe的可执行文件。
? ???
??

? ? register
? ? register称为寄存器变量。它只能用于整型和字符型变量。定义符register说明的变量被Turbo C2.0存储在CPU的寄存器中,??而不是象普通的变量那样存储在内存中, 这样可以提高运算速度。但是Turbo C2.0只允许同时定义两个寄存器变量,一旦超过两个, 编译程序会自动地将超过*数目的寄存器变量当作非寄存器变量来处理。因此, 寄存器变量常用在同一变量名频繁出现的地方。
? ? 另外, 寄存器变量只适用于局部变量和函数的形式参数, 它属于auto型变量,
因此, 不能用作全程变量。定义一个整型寄存器变量可写成:
? ?? ?register int a;
? ? 对于以上所介绍的变量类型和变量存储类型将会在以后的学习中, 通过例行程序中的定义、使用来逐渐加深理解。

参考资料:http://guowangwei.spaces.live.com/blog/cns!b54f214390d1727b!164.entry

热心网友 时间:2022-03-22 11:25

局部变量是指在程序中,只在特定过程或函数中可以访问的变量,是相对于全局变量而言的。

在C语言中,局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。

#include<stdio.h>
int fun(int a)
{
    int temp;    // 变量temp就是定义的一个局部变量,在fun函数执行完后,其在内存中占用的内存区就会释放回收
    temp = 2*a;
    return temp;
}
int b;  // 变量b就是一个全局变量,当程序执行完后,才释放其占用的内存
void main()
{
    int a=2;  // 变量a也是局部变量
    b = fun();
}

热心网友 时间:2022-03-22 12:59

就是在某个函数内的变量,不会影响到其他的变量的!
而全局变量的话,很有可能就会影响到其值的变化.

热心网友 时间:2022-03-22 14:51

C语言中全局变量有两种情况:
1. 定义在所有函数之外的变量;
2. 用static修饰的变量;

其余的变量都是局部变量,即定义在某个函数或者代码段内部,其作用域局限于这个函数或者代码段。

热心网友 时间:2022-03-22 16:59

还是看看书吧 局部变量和全局变量
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 关于VF的填空题(几道) 要定义一个局部变量,应使用的关键字是什么 易语言的“.局部变量”命令的具体用法? 声明局部变量使用的命令是 怎么定义局部变量 跪求,,,VF题的答案!!!!! 在程序中定义局部变量的命令动词是? 将对称三相负载接到三相电压源,试比较负载作星形连接和三角形连接两种情况的线电流和功率 三相负载做星形连接和三角形连接的使用场合 三相负载按星形或三角形连接,当三相负载对称时又有何关系? 三相负载根据什么条件做星形或三角形连接 三相负载根据什么条件作星形或三角形连接? 三相负载星形或三角形连接问题 三相负载根据什么条件作星形或三角形连接 三相负载按星形连接或三角形连接,它们的线电压与相电压·线电流与相电流有何关系 三相负载究竟做何种连接,要根据电源电压和负载的( )来决定 三相电机什么时候用星形连接 什么时候用三角形连接? 三相交流电路电压,电流的测量实验中,三相负载根据什么条件做星型或三角形连接 在三相电路中,三相负载根据什么条件作星型或三角形连接? 三相负载作星域或三角形连接取决于什么? java中局部变量具体是什么,可以干什么,有什么作用, vb定义局部变量的关键字都有什么 ? C语言中的全局变量和局部变量分别是指什么? 大一c语言的问题,关于变量定义,全局变量和局部变量是什么? 求教 C语言的“局部变量” 是什么意思? SQL中全局变量和局部变量的用法 C语言中的静态局部变量的定义 C语言中 局部变量和全局变量的概念? 局部变量的概念 局部变量名词解释 学信网密保问题有没有顺序 学信网三个密保填一个可以吗 学信网学籍查询不会弄,自己的身份证号码对应的密码不记得了,找回密码问题顺序有关吗,还有2天截止?! 学信网密保问题明明是对的但是过不了 学信网密码忘了怎么办? 学信网忘记密保问题密码 手机号也换了 怎么解决 学信网密码是几位的 学信网怎么改密保问题 学信网密码忘记? 学信网保密问题不知道怎么办?