涉及的语法 变量的存储类型 编译器为变量分配内存的方式 它决定变量的生存期 动态存储 内存分配 根据需要临时分配 存储空间离开即程序存储区 释放 全局变量、 静态存储 静态存储区 静态变量 在程序运行期间分 配固定的存储空间动态存储区 形参、自动变 量、函数调用 不释放 的现场等
6 涉及的语法 -变量的存储类型 ▪ 编译器为变量分配内存的方式 ▪ 它决定变量的生存期 程序存储区 静态存储区 动态存储区 形参、自动变 量、函数调用 的现场等 全局变量、 静态变量 ▪ 动态存储 ▪ 根据需要临时分配 存储空间,离开即 释放 ▪ 静态存储 ▪ 在程序运行期间分 配固定的存储空间 不释放 内存分配
例-静态变量 #include <stdio. h> Funco was called 1 time(s) void Func(void: Funco was called 2 time(s) maino Funco was called 3 time(s) int i Funco was called 4 time(s) for(i=0:i<10:i+) Funco was called 5 time(s) t FuncO Funco was called 6 time(s) Func was called 7 time(s) Funco was called 8 time(s) Funco was called 9 time(s) 函数物能:打印被调用的次数 Funco was called 10 time(s) 函数口参数:无 函数痃回值:无 times 10 vdid Func(void) static int times =1: 静态局部变量函数结束时tmes变量仍然占据 静态存储区的存储空间,不释放*/ ]PIntfcFunco was called %d time (s).\n". times++)
7 例-静态变量 #include <stdio.h> void Func(void); main() { int i; for (i=0; i<10; i++) { Func(); } } /* 函数功能: 打印被调用的次数 函数入口参数: 无 函数返回值: 无 */ void Func(void) { static int times = 1; /*静态局部变量 函数结束时times变量仍然占据 静态存储区的存储空间,不释放*/ printf("Func() was called %d time(s).\n", times++); } Func() was called 1 time(s). Func() was called 2 time(s). Func() was called 3 time(s). Func() was called 4 time(s). Func() was called 5 time(s). Func() was called 6 time(s). Func() was called 7 time(s). Func() was called 8 time(s). Func() was called 9 time(s). Func() was called 10 time(s). times 10123
例-非静态变量 # Include <stdi io.h> void Func(void) Funco was called 1 time(s) maino Funco was called 1 time(s) int i Func o was called 1 time(s) for(i=0:i<10:i++) Funco was called 1 time(s) FuncO: Func o was called 1 time(s) Func( was called 1 time(s) Funco was called 1 time(s) Funco was called 1 time(s) 函数功能:打印被调用的次数 Func was called 1 time(s) 函数入口参数:无 Funco was called 1 time(s) 函数返回值:无 Mpid Func(void) int times 1 printf(" Funco was called %d time (s). \n". times++)
8 例-非静态变量 #include <stdio.h> void Func(void); main() { int i; for (i=0; i<10; i++) { Func(); } } /* 函数功能: 打印被调用的次数 函数入口参数: 无 函数返回值: 无 */ void Func(void) { int times = 1; printf("Func() was called %d time(s).\n", times++); } Func() was called 1 time(s). Func() was called 1 time(s). Func() was called 1 time(s). Func() was called 1 time(s). Func() was called 1 time(s). Func() was called 1 time(s). Func() was called 1 time(s). Func() was called 1 time(s). Func() was called 1 time(s). Func() was called 1 time(s). times 12 times 12
根据存储类型可分为 自动变量(auto) 静态变量( static n寄存器变量( register)
9 根据存储类型可分为 ▪ 自动变量(auto) ▪ 静态变量(static) ▪ 寄存器变量(register)
自动变量(auto) 我们以前定义的那些变量,都默认是这种类型目 “自动”体现在 进入语句块时自动申请内存,退出时自动释放内存 标准定义格式 auto类型名变量名; 特点 动态局部变量 缺省的存储类型 丕初始化时,值是不确定的 10
10 自动变量 (auto ) ▪ 我们以前定义的那些变量,都默认是这种类型 ▪ “自动”体现在 ▪ 进入语句块时自动申请内存,退出时自动释放内存 ▪ 标准定义格式 auto 类型名 变量名; ▪ 特点: ▪ 动态局部变量 ▪ 缺省的存储类型 ▪ 不初始化时,值是不确定的