C语言中变量储存的类别
C语言根据变量的生存周期来划分,可以划分为静态存储方式和动态存储方式。
C语言中变量储存的类别静态存储方式:是指在程序的运行期间分配固定的存储空间的方式。静态存储区中存储放了在整个程序执行过程中都存在的变量,如全局变量
动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行需要而进行的需要而建立和释放的。通常包括: 1. 函数形式参数;2. 自动变量;3. 函数调用时的现场保护、4. 和返回值地址等。
C语言中的存储类别又分为4类:
自动(auto)、
静态(static)、
动态(extern)
寄存器(register)
1、 用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为”自动存储类别“,属于动态存储方式。
12345 | int fn( int a) //定义f函数,a为参数 { //定义b,c为自动变量
auto int b,c; } |
2、用static修饰的.为静态变量,如果定义在函数内部,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量,
1234567891011121314151617 | #include <stdio.h> void fn() {
static int x = 0 ;
x++;
printf( "fn: x=%d" ,x); } int main() {
int i;
for (i= 0 ;j< 10 ;i++)
{
fn();
}
return 0 ; }</stdio.h> |
注意:
静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;
静态局部变量在编译时赋初值,即只赋初值一次;如果在定义局部变量时,不赋初值的话,则对静态局部变量来说,编译时自动赋初值0.(对数值型变量)或空字符(对字符变量)。
3、为了提高效率,C语言允许将局部变量得值放在CPU中的寄存器中,这种变量叫”寄存器变量“,用关键字register做声明
1234 | void fn() {
register int i; } |
注意:只有局部自动变量和形式参数可以作为寄存器变量;一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量
局部静态变量不能定义为寄存器变量。
4、用extern声明的变量是外部变量,外部变量的意义是某函数可以调用在该函数之后定义的变量
1234567 | #include <stdio.h> int main() {
extern int x; //这里声明的是外部局部变量
printf( "extern x=%d" ,x); } int x= 100 ;</stdio.h> |
任务:
12345678910111213141516171819 | #include <stdio.h> void fn() {
static int x = 1 ;
x *= 2 ;
printf( "x=%d" ,x); } int main() {
int i;
for (i= 0 ;i< 5 ;i++)
{
fn();
}
extern int x;
printf( "x=%d" ,x);
return 0 ; } int x = 100 ;</stdio.h> |
运行结果是x=2;x=4;x=8;x=16;x=32;x=100
-
C语言合并排序及实例代码
归并排序也称合并排序,其算法思想是将待排序序列分为两部分,依次对分得的两个部分再次使用归并排序,之后再对其进行合并。下面是小编分享的C语言合并排序及实例代码,一起来看一下吧。合并排序仅从算法思想上了解归并排序会觉得很抽象,接下来就以对序列A[0],A[l]…,A...
-
二级C语言考试复习五要点
综观近几年全国计算机等级二级基础部分和C语言程序设计的题目,笔试中大多数考题是与大纲要求的基本内容一致的,难度不高,但内容十分广泛,应牢固掌握。以下是小编为您带来的二级C语言考试复习五要点,感谢您的阅读!一、了解试卷,胸中有数综观近几年全国计算机等级二级...
-
嵌入式C语言优化技巧
嵌入式系统是指完成一种或几种特定功能的计算机系统,具有自动化程度高,响应速度快等优点,目前已广泛应用于消费电子,工业控制等领域。嵌入式系统受其使用的硬件以及运行环境的限制,非常注重代码的时间和空间效率,因此选择一种合适的开发语言十分重要。下面是相关的知...
-
2017年计算机二级C语言的应用
yjbys考试网为您整理了2017年计算机二级C语言的应用,更多计算机等级考试相关信息请访问应届毕业生计算机等级考试网。从前面对C语言的特点的分析中,不难看出C语言具有编程方便、语句简练、功能很强、移植性好等优点,是编程者喜欢使用的一种结构化程序设计语言。C...