引言:
C语言的static有点内涵,今天遇到个有意思的问题。
正文:
先上代码:
/*
时间:2012-03-06 16:30
目的:实验静态局部变量
*/
#include <stdio.h>
int f()
{
static int a = 0;
a++;
return a;
}
int fa()
{
static int a;
a = 0;
a++;
return a;
}
int main(void)
{
int i, j;
// f()
for (i = 0; i < 4; i++)
{
j = f();
printf("a = %d\n", j);
}
// fa()
for (i = 0; i < 4; i++)
{
j = fa();
printf("a = %d\n", j);
}
return 0;
}
/*
VC++6.0 结果
---------------------
a = 1
a = 2
a = 3
a = 4
a = 1
a = 1
a = 1
a = 1
Press any key to continue
---------------------
*/
小差异,大区别。到底是咋回事呢?
(要开会,稍后续)
因为,static语句,从始至终,只被执行过一次。
读了static说明书,发现这个问题很菜,留着吧。笔者目前也就这水准了~。= 另外献上参考贴,请看下文引用内容。
引用:
C语言中的static的作用
分享到:
相关推荐
在C语言编程中,`static`关键字扮演着一个非常重要的角色,尤其是在处理变量的存储方式、作用域以及生命周期方面。本文将深入探讨C语言中`static`变量的使用方法,包括静态局部变量、静态全局变量以及`static`函数的...
C语言使用static中声明局部变量的用法及作用源码 C语言使用static中声明局部变量的用法及作用源码 C语言使用static中声明局部变量的用法及作用源码 C语言使用static中声明局部变量的用法及作用源码 C语言使用...
在同一个函数内可以定义多个同名的局部变量,每个局部变量的作用域就在那个循环体内。 二、extern关键字 extern关键字用于引用已经定义过的全局变量。如果用引用头文件方式来引用某个在头文件中声明的全局变理,...
举例来说,如果你有一个函数需要计算结果并返回,但不想让这个结果影响到其他函数,那么应该使用局部变量。而如果有一个状态标志需要在多个函数间共享,全局变量可能是更合适的选择。 在Keil App的项目中,我们可以...
"C语言中局部变量和全局变量在内存中的存放位置" C语言中局部变量和全局变量是两种不同的变量类型...因此,了解C语言中局部变量和全局变量的特点和使用方法,可以帮助我们更好地编写C语言程序,并提高我们的编程能力。
假设我们有一个简单的示例来说明全局变量和局部变量的使用: ```c #include int global_var = 10; void modify_global() { global_var++; // 修改全局变量 } void modify_local() { int local_var = 5; // ...
- 当在一个函数内部定义了一个`static`变量时,该变量就变成了一个局部静态变量。 - 局部静态变量在其整个生命周期内只初始化一次,即使调用该函数多次也只初始化一次。 - 每次函数退出后,局部静态变量的值会...
局部变量的作用域:在一个函数内部定义的变量只能在本函数内部进行使用。 OK,上面的效果用Java语言实现一下: public class App1 { public static int k = 10;//相当于全局变量 public static void main...
由于静态局部变量的值在程序运行期间持续存在,如果程序中的多线程会同时访问同一个静态局部变量,就需要考虑线程安全的问题,以避免出现竞争条件导致的不一致现象。另外,在调试过程中,由于静态局部变量可能在程序...
C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register)1.局部变量和全局变量在讨论函数的形参变量时曾经提到,形参变量只在被调用期间才分配内存单元,调用结束立即释放。这一点表明形参变量只有在...
在C语言中,变量分为全局变量和局部变量,这两种变量在内存中的存储方式和可访问范围都有所不同。 3.1 变量的生存期: 生存期指的是变量在程序中的生命周期。全局生存期的变量,包括全局变量和静态变量,它们在程序...
2. 静态局部变量:在函数内部,使用static关键字声明的局部变量,虽然也只在该函数内可见,但其生命周期贯穿整个程序执行期间,仅在首次调用函数时初始化一次。 3. 隐蔽性:全局变量容易被误修改,建议尽量减少全局...
- 当在函数内部的局部变量前加上`static`,这个变量就变成了局部静态变量。虽然它的作用域仍限于该函数,但不同于普通局部变量,局部静态变量在函数退出后不会被销毁,而是保持其最后的状态,直到程序结束。 - ...
在单片机与DSP开发中,使用ADS(ARM Development Studio)进行C语言编程时,局部变量的存储位置分配是一个关键的细节。虽然教科书上通常将C语言的局部变量视为存储在“栈”中,但实际实现可能有所不同,这取决于...
`static`关键字在C语言中的意义经历了一个不断演变的过程。最初,`static`被用来表示那些在退出作用域后仍然存在的局部变量。随后,`static`被扩展了另一种含义:用来表示那些不能被其他文件访问的全局变量和函数。...
在C语言中,`static`关键字是一个非常重要的概念,它可以帮助开发者更好地管理内存和控制变量的作用域。本文将详细介绍`static`关键字的不同用途及其对程序行为的影响,帮助读者深入理解C语言中的`static`。 #### ...
本文将详细介绍C语言中不同类型的变量在内存中的分配机制,并通过一个具体的示例程序来具体说明。 #### 变量的内存分配类型 在C语言中,根据变量的作用域和生命周期的不同,可以将其分为以下几类: 1. **全局...
- **关键字static的历史**:在C语言中,`static`关键字最初被引入是为了表示在退出一个块后仍然存在的局部变量。随后,`static`又获得了另一种含义:用来表示不能被其他文件访问的全局变量和函数。尽管如此,为了不...
局部变量可以分为两种,一种是形参变量,另一种是普通局部变量。形参变量是函数的参数,它们的作用域仅限于函数内部,而普通局部变量是函数内部定义的变量,它们的作用域也仅限于函数内部。局部变量的存储类别可以是...
在C语言中,`static`关键字具有重要的功能,主要体现在以下几个方面:修饰局部变量、全局变量以及函数。接下来将详细解释这些用途及其背后的原理。 #### 1. 修饰局部变量 当`static`用于函数内部的局部变量时,该...