常见C语言基础说明三:static修饰的函数或变量

一.  简介

前面几篇学习了  C语言中基础问题,文章如下:

常见C语言基础题说明一-CSDN博客

常见C语言基础说明二:位运算问题-CSDN博客

本文继续学习 嵌入式C开发中,可能涉及的一些C语言基础问题。

二.  常见C语言基础说明三:static修饰的函数或变量

1.  static修饰的函数或变量

对于内存,我们可以简单的理解为,内存分为三个部分,栈区、堆区和静态区。
栈区: 保存局部变量,栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。栈区的特点是效率高,但是空间有限。


堆区: 由malloc系列函数或new操作符分配内存。其生命周期由free或delete决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但是容易出错。


静态区: 保存全局变量和静态变量,静态区的内容在整个程序的生命周期内都存在,由编译系统在编译的时候分配。

在C语言中,static 是修饰变量和函数的。static 修饰局部变量称为静态局部变量,static 修饰全局变量称为静态全局变量,static 修饰函数称为静态函数。

静态函数:它们的作用域被限制在定义它们的源文件中,它们不能被其他文件中的函数调用。静态函数只能在定义它们的文件中使用。

使用static关键字声明的变量是静态变量,它们的作用域被限制在定义它们的源文件中,全局变量和被 static 修饰后的局部变量都在静态区分配内存。

在一个函数中,由static 函数修饰的是局部静态变量,与普通局部变量不同,局部静态变量在函数调用结束之后不会被销毁,而是保存上一次执行后的值继续存在。

2.  static修饰的变量

static修饰的局部变量:

#include <stdio.h>
 
int caculate(int a)
{
    static int b = 5;
    b = a*b;
    return b;
}

int main(void)
{ 
    int result = 0;

    caculate(2);
    result = caculate(3);
    printf("%d\n", result);

    return 0;
}

综上所述:

所以,caculate(2) 运行后,b的值为 10,而当运行 caculate(3) 后,b = 10*3 ,也就是 30。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值