c语言函数参数寄存器 c语言 寄存器( 三 )


具体执行过程分析如下:
首先程序经过编译后声称可执行文件,运行可执行文件后,函数从Main函数体进入,在初始化的过程中得到i为全局变量,初值为1 。进入main函数后首先调用函数reset() , 进入文件file3.c , 文件file3.c声明i为外部变量 , 所以此时i的值为1 , 则返回的值为1 。函数reset()执行完后返回主函数,继续执行循环体中的程序 。循环体首先调用函数next() , 程序进入file2.c文件,判断i为静态变量,所以此时i的值为10,执行next()之后i的值为11,返回值为11 , 并将11作为i的值 。当调用last()函数时,判断i的值为11 , 执行函数后 , i的值变为10,并将10作为i的值 。最后执行函数sum(i),此时值的注意的是执行程序时传递的是形参,即第一次调用时实际计算的值为sum(i+j=2),这样调用函数sum(i)后执行的结果为i=5+2=7,即为执行的结果 。依次类推,分别为7,10,14 。
通过以上的程序可以理解不同的存储类型的作用范围不同 , 在程序设计中如何灵活的使用各种不同的存储类型是能够使程序更灵活 。
C语言中变量的存储类型有哪几种,存储方式哪几种?谢喽C语言中变量的存储类型有哪几种,存储方式哪几种?谢喽
我想你说的应该是数据类型吧
没记错的话应该有以下几种:
静态变量:变量的生存期是从程序开始到结束;
动态变量:在程序运行当中需要调用该变量时才为它分配内存;
寄存器变量:存在于寄存器中:用于需要高速存取数据的场合
C语言 *** 有哪几种存储类型?
Turbo C2.0支持四种变量存储类型 。说明符如下:
auto static extern register
下面分别来介绍 。
一、auto
auto称为自动变量 。
局部变量是指在函数内部说明的变量(有时也称为自动变量) 。用关键字auto进
行说明, 当auto省略时, 所有的非全程变量都被认为是局部变量, 所以auto实际上
从来不用 。
局部变量在函数调用时自动产生, 但不会自动初始化, 随函数调用的结束, 这
个变量也就自动消失了, 下次调用此函数时再自动产生, 还要再赋值, 退出时又自
动消失 。
二、static
static称为静态变量 。根据变量的类型可以分为静态局部变量和静态全程变量 。
1. 静态局部变量
它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它
函数使用, 当再次进入该函数时, 将保存上次的结果 。其它与局部变量一样 。
2. 静态全程变量
Turbo C2.0允许将大型程序分成若干独立模块文件分别编译, 然后将所有模块
的目标文件连接在一起, 从而提高编译速度, 同时也便于软件的管理和维护 。静态
全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量 。它与
全程变量的区别是: 全程变量可以再说明为外部变量(extern), 被其它源文件使用,
而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用 。
三、extern
extern称为外部变量 。为了使变量除了在定义它的源文件中可以使用外, 还要
被其它文件使用 。因此, 必须将全程变量通知每一个程序模块文件, 此时可用
extern来说明 。
四、register
register称为寄存器变量 。它只能用于整型和字符型变量 。定义符register说
明的变量被Turbo C2.0存储在CPU的寄存器中, 而不是象普通的变量那样存储在内
存中, 这样可以提高运算速度 。但是Turbo C2.0只允许同时定义两个寄存器变量,
一旦超过两个, 编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量

推荐阅读