C语言中static是做什么用的?

看网上说法不一。如果是为程序中的通用变量定义的话(就像VB中的Public一样)。那指针不是也可以么?还有。在main()之外定义变量不是也可以整个程序通用么?

static 用来说明静态变量。如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在当前c程序文件中使用,在另一个c代码里面,即使使用extern关键词也不能访问这个static变量。如果是在函数内部定义的,那么这个变量只初始化一次。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

C语言继续发展,在1982年,很多有识之士和美国国家标准协会为了使这个语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。委员会由硬件厂商,编译器及其他软件工具生产商,软件设计师,顾问,学术界人士,C语言作者和应用程序员组成。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-20
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
(1)第一个作用:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。
下面是a.c的内容
#include<cstdio>增加这条语句
char a = ‘A‘; // global variable
void msg()
{
printf("Hello\n");
}
你可能会问:为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。
如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用。
(2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。
(3)static的第三个作用是默认初始化为0。其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。
最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。
下面是main.c的内容
除了头文件,需要声明函数:void msg();
int main(void)
{
extern char a; // extern variable must be declared before use
printf("%c ", a);
(void)msg();
return 0;
}
第2个回答  2015-07-05
  在C语言中,static的作用有三个,分别如下:
  1、隐藏;
  当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
  2、保持变量内容的持久;
  存储在静态数据区的变量会在程序刚开始运行时就完成初 始化,也是唯一的一次初始化。
  3、默认初始化为0;
  在静态数据区,内存中所有的字节默认值都是0x00,某些 时候这一特点可以减少程序员的工作量。

static在c语言中代表什么
在C语言中,`static`是一个关键字,用于修饰变量、函数和代码块。它有以下几种含义:修饰变量:当一个变量被声明为`static`时,它会在该程序的作用域内被存储,而不是在堆栈上。这意味着该变量可以在程序的多个函数之间共享,并且不会因为函数的调用而丢失。修饰函数:当一个函数被声明为`static`时...

static在c语言中是什么意思
static在c语言中是私有、静态意思。用于在函数中声明“静态变量”用,在每一次调用后,该变量并不在函数返回时立即释放,变量中保存的值,可以保留到下一次调用时继续有效。私有就是隐藏。static函数只能声明后的本文中调用。static全局变量只能声明后的本文中调用。static局部变量只能声明后的本函数调用 静态...

static关键字的作用
static关键字的作用如下:1、修饰变量 静态全局变量:全局变量前加static修饰,该变量就成为了静态全局变量。我们知道,全部变量在整个工程都可以被访问,而在添加了static关键字之后,这个变量就只能在本文件内被访问了。因此,在这里,static的作用就是限定作用域。静态局部变量:局不变量添加了static修饰之...

c语言中static是什么意思(static在c语言中是什么意思是用什么输出)
static用来说明静态变量。如果是在函数外面定义的,那么其效果和全局变量类似,即static说明的变量可以在当前c程序文件中使用。如果是在函数内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次被初始化,于是,这个变量的取值就会一直保存着,我们再次调用该函数时,仍是保存...

static关键字在C语言中有什么样的作用?
在C语言中,static关键字的作用如下:1、在修饰变量的时,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。2、static修饰全局变量的时,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。3、static修饰一个函数,则这个...

C语言中static是做什么用的?
static 用来说明静态变量。如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在当前c程序文件中使用,在另一个c代码里面,即使使用extern关键词也不能访问这个static变量。如果是在函数内部定义的,那么这个变量只初始化一次。C语言是一门通用计算机编程语言,应用广泛。C语言的...

C语言关键字 static 的用法
C语言中,静态关键字(static)的三种常见用途如下:1. 局部变量修饰符: 当在函数内部使用static修饰局部变量时,我们称之为局部静态变量。这种变量在函数结束后不会被销毁,下一次函数调用时,它会保留上一次调用的值。比如:cint func() { int x; \/\/ 非静态局部变量 static int y; \/\/ 静态...

C语言中static有啥用
在C语言中,static的作用有三个,分别如下:1、隐藏;当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。2、保持变量内容的持久;存储在静态数据区的变量会在程序刚开始运行时就完成初 始化,也是唯一的一次初始化。3、默认初始化为0;在静态数据区,内存中所有的字节默认值都...

C语言中static是做什么用的?
有两种用法:1、static修饰局部变量,成为一个局部静态变量。static修饰局部变量(静态局部变量)与普通局部变量相比,它的优势在于:①静态局部变量作用域与连接属性与普通局部变量一样;②存储类:静态局部变量分配在data\/bss段,普通局部变量在栈上;③生命周期:因为存储类的不同,静态局部变量的生命周期...

c语言中static 到底有啥作用啊?
在C语言中,static的作用有三个,分别如下:1、隐藏;当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。2、保持变量内容的持久;存储在静态数据区的变量会在程序刚开始运行时就完成初 始化,也是唯一的一次初始化。3、默认初始化为0;在静态数据区,内存中所有的字节默认值都...

相似回答