C语言中static关键字如何具体应用?

2026-05-20 08:470阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2801个文字,预计阅读时间需要12分钟。

C语言中static关键字如何具体应用?

C++语言中的`static`关键字有三种用途(整体来说可以说是两种):

1. 静态局部变量:用于函数体内的变量修饰,使得变量的生命周期长于函数本身。例如: c int foo() { static int i=1; // note: 1 // int i=1; // note: 2 i的生命周期长于foo函数 }

C 语言的 static 关键字有三种(具体来说是两种)用途:

1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数。

int foo(){ static int i = 1; // note:1 //int i = 1; // note:2 i += 1; return i; }

要明白这个用法,我们首先要了解c/c++的内存分布,以及static所在的区间。

对于一个完整的程序,在内存中的分布情况如下图: 

1.栈区: 由编译器自动分配释放,像局部变量,函数参数,都是在栈区。会随着作用于退出而释放空间。
3.堆区:程序员分配并释放的区域,像malloc(c),new(c++)
3.全局数据区(静态区):全局变量和静态便令的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束释放。
4.代码区

所以上面note:1的static是在全局数据区分配的,那么它存在的意思是什么?又是什么时候初始化的呢?

首先回答第一个问题:它存在的意义就是随着第一次函数的调用而初始化,却不随着函数的调用结束而销毁(如果把以上的note:1换成note:2,那么i就是在栈区分配了,会随着foo的调用结束而释放)。

阅读全文
标签:stat

本文共计2801个文字,预计阅读时间需要12分钟。

C语言中static关键字如何具体应用?

C++语言中的`static`关键字有三种用途(整体来说可以说是两种):

1. 静态局部变量:用于函数体内的变量修饰,使得变量的生命周期长于函数本身。例如: c int foo() { static int i=1; // note: 1 // int i=1; // note: 2 i的生命周期长于foo函数 }

C 语言的 static 关键字有三种(具体来说是两种)用途:

1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数。

int foo(){ static int i = 1; // note:1 //int i = 1; // note:2 i += 1; return i; }

要明白这个用法,我们首先要了解c/c++的内存分布,以及static所在的区间。

对于一个完整的程序,在内存中的分布情况如下图: 

1.栈区: 由编译器自动分配释放,像局部变量,函数参数,都是在栈区。会随着作用于退出而释放空间。
3.堆区:程序员分配并释放的区域,像malloc(c),new(c++)
3.全局数据区(静态区):全局变量和静态便令的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束释放。
4.代码区

所以上面note:1的static是在全局数据区分配的,那么它存在的意思是什么?又是什么时候初始化的呢?

首先回答第一个问题:它存在的意义就是随着第一次函数的调用而初始化,却不随着函数的调用结束而销毁(如果把以上的note:1换成note:2,那么i就是在栈区分配了,会随着foo的调用结束而释放)。

阅读全文
标签:stat