C语言
-
变量的存储类别、
- 静态存储变量、——全局变量是静态存储
- 程序运行期间有固定存储空间
2. 动态存储变量、
3. 存储的内容、
4. 形参、
5. 局部变量、
6. 函数调用时发生的数据和返回地址、
7. 程序运行期间有根据需要而分配存储空间、
8. 每次调用函数分配的内存分配都不一定一样、
- 程序运行期间有固定存储空间
- 静态存储变量、——全局变量是静态存储
-
局部变量的存储方式、
-
函数调用时分配、调用完成后空间会被释放——一般情况下、
void a() { int c = 1; printf("c=%d ", c); c++; return; } int main() { a(); a(); a(); a(); a(); a(); }//结果一直是1、
-
特殊情况——局部静态变量、
-
局部静态变量使用——static保留、
-
void a() { static int c = 1; printf("c=%d ", c); c++; return; } int main() { a();//返回1 a();//返回2、因为局部静态变量保留数值、占用储存单元不释放内存 a(); a(); a(); a(); }
-
static——将动态变量的存储区域改为静态存储区域???(个人理解或许是错误有待验证) -
局部变量在编译时赋予初值、只赋予一次、程序运行的时候就有值、以后调用时不在重新赋初值而是使用上次调用结束时的值、
-
定义局部静态变量时如不赋初值时、则自动赋值为0、
-
普通局部变量不赋初值、则初值为随机内容、
-
静态局部变量使用结束后期内容仍然保留、且其它函数不能引用该内容、
-
缺点、
-
占用内存、
-
-
-
-
全局变量跨文件引用、
-
一个项目中只能有一个main函数
-
使用外部全局变量需在头部使用extern 来声明该变量
-
extern ........ ..... ...
-
-
、在全局变量前加上static则该变量只能在本函数内使用、其它函数不能使用、使用extern来声明的话无效、
-
全局变量使用时、如果别的函数改变该变量的内容、则该全局变量的内容也会变动
-
-
函数的跨文件调用、
- 函数前面加上static、表示该函数是内部函数、静态函数、限制再本函数中使用、可以并存但是内存不同、两个
- 两个名称类型相同的函数可以并存、且两个函数互不干扰、——同一个项目下、不同的文件内、
2. 不用static则是外部函数、也可以加extern 加不加都可以
- 两个名称类型相同的函数可以并存、且两个函数互不干扰、——同一个项目下、不同的文件内、
- 函数前面加上static、表示该函数是内部函数、静态函数、限制再本函数中使用、可以并存但是内存不同、两个
-
static关键字用法总结、
- 限制该全局变量只能再本函数内使用