广告
返回顶部
首页 > 资讯 > 精选 >C 语言中 static 的作用是什么
  • 792
分享到

C 语言中 static 的作用是什么

2023-06-03 09:06:12 792人浏览 八月长安
摘要

这篇文章给大家介绍C 语言中 static 的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。static 用来说明静态变量。如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在

这篇文章给大家介绍C 语言中 static 的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

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

在 C 语言中,static 的字面意思很容易把我们导入歧途,其实它的作用有三条。

它的第一条也是最重要的一条:隐藏

当我们同时编译多个文件时,所有未加 static 前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是 a.c,另一个是 main.c。

下面是 a.c 的内容:

a.c 文件代码

char a = 'A'; // global variablevoid msg(){    printf("Hello\n");}

下面是 main.c 的内容:

main.c 文件代码

int main(void){        extern char a;    // extern variable must be declared before use    printf("%c ", a);    (void)msg();    return 0;}

程序的运行结果是:

A Hello

你可能会问:为什么在 a.c 中定义的全局变量 a 和函数 msg 能在 main.c 中使用?前面说过,所有未加 static 前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a 是全局变量,msg 是函数,并且都没有加 static 前缀,因此对于另外的源文件 main.c 是可见的。

如果加了 static,就会对其它源文件隐藏。例如在 a 和 msg 的定义前加上 static,main.c 就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。static 可以用作函数和变量的前缀,对于函数来讲,static 的作用仅限于隐藏,而对于变量,static 还有下面两个作用。

static 的第二个作用是保持变量内容的持久

存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和 static 变量,只不过和全局变量比起来,static 可以控制变量的可见范围,说到底 static 还是用来隐藏的。虽然这种用法不常见,但我还是举一个例子。

实例

#includeint fun(void){    static int count = 10;    // 事实上此赋值语句从来没有执行过    return count--;}int count = 1;int main(void){        printf("global\t\tlocal static\n");    for(; count <= 10; ++count)        printf("%d\t\t%d\n", count, fun());           return 0;}

程序的运行结果是:

global          local static1               102               93               84               75               66               57               48               39               210              1

static 的第三个作用是默认初始化为 0

其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是 0x00,某些时候这一特点可以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以一个一个地把所有元素都置 0,然后把不是 0 的几个元素赋值。如果定义成静态的,就省去了一开始置 0 的操作。再比如要把一个字符数组字符串来用,但又觉得每次在字符数组末尾加 \0 太麻烦。如果把字符串定义成静态的,就省去了这个麻烦,因为那里本来就是 \0 。

不妨做个小实验验证一下。

实例

#includeint a;int main(void){    int i;    static char str[10];    printf("integer: %d;  string: (begin)%s(end)", a, str);    return 0;}

程序的运行结果如下:

integer: 0; string: (begin)(end)

最后对 static 的三条作用做一句话总结。首先 static 的最主要功能是隐藏,其次因为 static 变量存放在静态存储区,所以它具备持久性和默认值0。

关于C 语言中 static 的作用是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: C 语言中 static 的作用是什么

本文链接: https://www.lsjlt.com/news/233826.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C 语言中 static 的作用是什么
    这篇文章给大家介绍C 语言中 static 的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。static 用来说明静态变量。如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在...
    99+
    2023-06-03
  • C语言中static关键字的作用是什么
    本篇内容介绍了“C语言中static关键字的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!static这个关键字是“静态”的意思,...
    99+
    2023-07-05
  • c语言关键字static的作用是什么
    在C语言中,关键字static有以下几种作用:1. 静态变量:static关键字可以用于声明静态变量,静态变量存储在静态存储区,在程...
    99+
    2023-09-14
    c语言 static
  • C语言中static和auto用法是什么
    这期内容当中小编将会给大家带来有关C语言中static和auto用法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。static的第一种用法:定义为静态变量何为静态变量?存储在静态数据区的变量会在程序...
    99+
    2023-06-26
  • c++中static的作用是什么
    在C++中,`static`关键字有以下几种作用:1. 静态变量:在函数内部声明的静态变量在程序运行期间只被初始化一次,并且在函数运...
    99+
    2023-10-12
    c++
  • c语言static的作用有哪些
    C语言中的static关键字有以下几种作用:1. 限制作用域:在函数内部使用static修饰局部变量,可以将其作用域限制在函数内部,...
    99+
    2023-09-11
    c语言
  • C++ static的作用是什么
    这篇“C++ static的作用是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++ static...
    99+
    2023-07-05
  • static在c++中的作用是什么
    在C++中,关键字static有以下几种作用:1. 修饰变量:当static修饰一个局部变量时,该变量在程序的生命周期内只被初始化一...
    99+
    2023-08-31
    c++ static
  • C语言中static的使用介绍
    目录1.static 可以修饰局部变量2. static 可以修饰全局变量3.static 可以修饰函数总结1.static 可以修饰局部变量 首先让我看看这段代码 #inclu...
    99+
    2022-11-12
  • C#中Static修饰的作用是什么
    这篇文章将为大家详细讲解有关C#中Static修饰的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.类的静态成员:classA  {  p...
    99+
    2023-06-18
  • C语言中如何使用static
    这篇文章主要介绍C语言中如何使用static,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.static 可以修饰局部变量首先让我看看这段代码#include<stdio.h>void tes...
    99+
    2023-06-22
  • C语言中的Static关键字怎么用
    这篇文章主要介绍C语言中的Static关键字怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、static关键字的基本含义首先,static关键字的意思是静态的,用于修饰局部变量,全局变量和函数,修改其数据储存...
    99+
    2023-06-26
  • c语言中关键字Static怎么用
    这篇文章将为大家详细讲解有关c语言中关键字Static怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、可执行程序内存分配1. 可执行程序程序分段一个程序的3个基本...
    99+
    2022-10-19
  • c语言中auto的作用是什么
    在C语言中,auto是一种存储类说明符,用于声明自动变量。auto关键字可以用来显式声明变量,默认情况下所有局部变量都是自动变量,所...
    99+
    2023-10-28
    c语言
  • C语言中static的用法有哪些
    在C语言中,static关键字有以下几种用法:1. 在全局变量中使用static:当static关键字用于全局变量时,它的作用是限制...
    99+
    2023-08-08
    C语言 static
  • c语言windows.h的作用是什么
    "windows.h" 是一个头文件,它包含了Windows操作系统的应用程序编程接口(API)的声明和定义。它提供了访问和操作Wi...
    99+
    2023-09-26
    c语言
  • c语言unsigned的作用是什么
    在C语言中,unsigned是一种数据类型修饰符,用于声明无符号整数类型。它的作用是表示该类型的变量只能存储非负整数,即0及正整数。...
    99+
    2023-10-26
    c语言
  • assert在C语言中的作用是什么
    在C语言中,assert的作用是用于在程序中验证假设条件的正确性。它用于检查断言是否为真,如果断言为假,则会导致程序终止,并输出相应...
    99+
    2023-09-20
    assert C语言
  • C语言中链表的作用是什么
    C语言中链表的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先,指针计算机中的所有内容都是数字。在C语言中创建变量时,编译器仅按地址处理它,但是在您...
    99+
    2023-06-16
  • printf在c语言中的作用是什么
    在C语言中,`printf` 是一个输出函数,用于将数据打印到标准输出(通常是终端窗口)上。它是C语言标准库中的一个函数,用于格式化...
    99+
    2023-09-04
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作