0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【笔记】static 在C语言中的用法

撞上电子 2023-06-12 10:03 次阅读

当 `static` 关键字用于不同的上下文时,其含义和作用也会有所不同。下面是更多示例代码,展示了 `static` 在不同用法下的具体效果:

示例1:静态局部变量

#include void increment() {static int count = 0;count++;printf("Count: %d\n", count);}int main() {increment(); // 输出:Count: 1increment(); // 输出:Count: 2increment(); // 输出:Count: 3return 0;}

在这个示例中,`count` 是一个静态局部变量。它被声明为 `static`,意味着它在函数调用之间保持持久性,并且其初始值只在第一次函数调用时初始化。每次调用 `increment()` 函数时,`count` 的值递增并打印。

示例2:静态全局变量

#include static int globalVar = 10;void function() {printf("Global variable: %d\n", globalVar);}int main() {function(); // 输出:Global variable: 10return 0;}

在这个示例中,`globalVar` 是一个静态全局变量。它被声明为 `static`,意味着它的作用域仅限于当前文件,并且无法被其他文件访问。在 `function()` 函数中,可以直接访问和使用静态全局变量。

示例3:静态函数

#include static void staticFunction() {printf("Static function\n");}int main() {staticFunction(); // 输出:Static functionreturn 0;}

在这个示例中,`staticFunction()` 是一个静态函数。它被声明为 `static`,意味着它的作用域仅限于当前文件,无法被其他文件调用。


示例4:静态结构体成员

#include struct MyStruct {int x;static int y;};int main() {struct MyStruct obj;obj.x = 5;obj.y = 10; // 错误:无法在结构体中使用静态成员return 0;}

在这个示例中,`MyStruct` 结构体中的 `y` 成员被声明为静态。然而,C语言不允许在结构体中使用静态成员。

示例5:静态局部数组

#include void printArray() {static int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");}int main() {printArray(); // 输出:1 2 3 4 5printArray();// 输出:1 2 3 4 5return 0;}

在这个示例中,`arr` 是一个静态局部数组。它被声明为 `static`,意味着它在函数调用之间保持持久性,并且其初始值只在第一次函数调用时初始化。每次调用 `printArray()` 函数时,都会打印相同的数组内容。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7534

    浏览量

    129130
  • static
    +关注

    关注

    0

    文章

    33

    浏览量

    10251
收藏 人收藏

    评论

    相关推荐

    在c语言中a++是什么意思

    在C语言中,a++是一个自增运算符,用于对a的值进行自增操作。它是一个简化的表达式,相当于将a的值加1,并返回自增前的值。 C语言中,自增运算符有两种形式:前自增和后自增。a++属于后自增运算符
    的头像 发表于 11-26 09:19 9852次阅读

    static关键字的三种用法

    变量(StaticVariables):在C语言中,使用`static`关键字来声明静态变量是一种常见的用法,它具有以下主要作用:1.生存期延长:静态变量的生存期在程序的整个运行期间,而不仅仅是在声明它的函数调用期间。这意味着静
    的头像 发表于 11-10 08:00 260次阅读
    <b class='flag-5'>static</b>关键字的三种<b class='flag-5'>用法</b>

    C语言中数字怎么转成指针?

    C语言中数字怎么转成指针,比如我要去内存地址为0x100的内容,用一句话表达,不如uchar a=?我要问号等于0x100地址的内容
    发表于 10-31 06:29

    C语言中ASCII代码是什么意思?

    C语言中ASCII代码是什么意思常见的ASCII代码都需要记吗
    发表于 10-25 07:10

    C51中断函数和汇编语言中断服务程序在用法上有什么不同?

    C51中断函数和汇编语言中断服务程序在用法上有何不同?
    发表于 10-17 08:31

    请问链表单片机C语言中有应用吗?

    链表单片机C语言中有应用么?
    发表于 10-16 07:28

    C语言中的结构体指针访问的时候怎么读取成员变量的数据?

    C语言中的结构体指针访问的时候怎么读取成员变量的数据
    发表于 10-10 07:07

    基于Rust语言Hash特征的基础用法和进阶用法

    ,包括Hash trait、HashMap、HashSet等,本教程将详细介绍Rust语言Hash特征的基础用法和进阶用法。 基础用法 使用Hash trait 在Rust
    的头像 发表于 09-19 16:02 746次阅读

    SQLx在Rust语言中的基础用法和进阶用法

    SQLx是一个Rust语言的异步SQL执行库,它支持多种数据库,包括MySQL、PostgreSQL、SQLite等。本教程将以MySQL数据库为例,介绍SQLx在Rust语言中的基础用法和进阶
    的头像 发表于 09-19 14:32 3102次阅读

    浅析C语言中的regiseter关键字

    C语言中重要的关键字有很多,static const extern我们之前都讲过,还有一个在面试中出现的频率也比较高:register。
    的头像 发表于 08-25 17:10 836次阅读
    浅析C<b class='flag-5'>语言中</b>的regiseter关键字

    C语言中while和do-while循环的用法

    循环是一种重要的控制结构,可以使程序重复执行一段代码,直到满足特定条件为止。在C语言中,while和do-while是两种常用的循环结构,本文将详细介绍这两种循环的用法
    发表于 08-18 16:35 1159次阅读
    C<b class='flag-5'>语言中</b>while和do-while循环的<b class='flag-5'>用法</b>

    C语言中for循环的用法和应用 C语言中for循环与while循环的区别

    C语言中的循环结构时,for循环是最常用的一种。它允许重复执行一段代码,直到满足特定条件为止。
    发表于 08-18 16:33 1049次阅读
    C<b class='flag-5'>语言中</b>for循环的<b class='flag-5'>用法</b>和应用 C<b class='flag-5'>语言中</b>for循环与while循环的区别

    C语言中枚举的基本概念和常见用法

    在C语言中,枚举是一种方便组织和表示一组相关常量的工具。枚举类型有助于提高代码的可读性和可维护性。本文将介绍C语言枚举的基本概念、语法和用法,以及一些高级技巧。
    发表于 08-17 15:32 784次阅读

    C语言中指针的基本概念和用法

    在C语言中,指针是一项重要的概念,它允许我们直接访问和操作内存地址。
    发表于 08-17 15:30 519次阅读

    C语言中预定义宏的用法和使用场景

    在C语言中,预定义宏是由编译器提供的一组特殊标识符,可以在程序中直接使用,无需进行额外的定义。
    发表于 08-16 16:12 265次阅读