聊聊c语言静态变量常量那些道道

在说static之前,先说一下变量的存储类别,从变量值存在的时间角度来分,可以分为静态存储方式和动态存储方式

->静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式。
->动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式。

全局变量全是静态变量,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。在程序执行过程中,它们占据固定的存储单元,而不是动态的进行分配和释放。

那我们在实际使用过程中,有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。这时就应该指定该局部变量为“静态局部变量”,定义静态局部变量时就会用到关键字static。通过以下例子可了解它的特点。

#include <stdio.h>
void print(int num)
{
    static int N=0;
    N+=num;
    printf("%d\n",N);
} 
int main(int argc, char *argv[])
{
    print(1);
    print(2);
    print(3);
    print(4);
    return 0;
}

输出为
从这可以看出,每次调用print函数的时候,定义的静态变量N都会在上次计算的基础上再相加,每次调用结束后,N的值不会被清空。
下面看一下将N定义为动态局部变量:

#include <stdio.h>
void print(int num)
{
    int N=0;
    N+=num;
    printf("     %d\n\n",N);
} 
int main(int argc, char *argv[])
{
    print(1);
    print(2);
    print(3);
    print(4);
    return 0;
}

这里写图片描述
这里会发现每次调用print函数时,N都会是0。

看了上面的小例子,大家应该能明白变量带static关键字和不带static的缘由和区别了吧。

下面说一下常量 定义的关键字const;

int a;这是定义了一个整形的变量;
a=10;我们可以对这个变量进行赋值及运算;

假设我们在程序中想要定义一个值,该值不可以被修改,只能被读取。此时就需要用到常量的关键字const。
const int a=10;//定义了一个常量a;该值是不能被修改的,使用时只能作为右值
int b=a;//这样的使用对的
int a=11;//这样是错误的

概念补充:
int a,b=1;
a=b;
“=”左边即为左值,右边即为右值,,,所以a为左值,b为右值。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值