首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言中static,const和static const 的区别

1.const规定了一个变量在它初始化值之后,值不能再改变,也就是只读。 来看个例子: ?...2.static在函数内的时候,表明这个变量在函数的生命周期结束之后也不会被释放。 ?...static使用测试 在第一次调用test()时,如果static int b没有被我赋初值,也会被默认赋值成0。然后执行自增运算,所以输出1。...第二次调用test()时如果是普通的变量,则会被重新分配内存,但static类型的变量上次执行test函数之后没有被释放,而是保存在全局变量区,所以继续加一变成2。...对比一下非static的变量会怎样: ? 3.static在函数外的时候,表明这个变量的作用域只在该.c文件里,不能作用于整个工程。

4.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    static、const、readonly与static readonly的区别与联系

    1、const修饰符 初始化时机:编译时,即编译程序时将值已经嵌入代码中; 值状态:不允许动态修改 修饰范围:字段、局部变量 主要应用场景:主要应用于程序运行中不需要改变的变量的值,比如数学符号PI;...,只能用于string类型的引用性变量;第二,类的只读公共属性 总结: const是静态的、编译期变量,只能在声明变量的时候赋值。...readonly是运行时变量,可以在声明的时候或在构造函数内赋值。 static readonly变量就变成了静态的、编译期变量。 只能静态构造函数中进行初始化。...同时static readonly可以理解为是最简单的一种单例模式实现方式。 const是静态常量,readonly是动态常量.const高效,readonly灵活!...但实际开发中我们经常用static readonly 来代替const, 以平衡const在灵活性上的不足.

    1.5K30

    c++的const和static区别

    const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。     static表示的是静态的。...类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。...在C++中,static静态成员变量不能在类的内部初始化。...      在C++中,const成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。  ...所以不能在类的声明中初始化const数据成员,因为类的对象没被创建时,编译器不知道const数据成员的值是什么。       const数据成员的初始化只能在类的构造函数的初始化列表中进行。

    4800

    变量的属性: 不可变(immutable), 可变(mutable), 重定义(shadowing), 常量(const), 静态(static)

    [Rust] 变量的属性: 不可变(immutable), 可变(mutable), 重定义(shadowing), 常量(const), 静态(static) 变量的可变性 在 Rust 中, 变量可以具有下面的属性...immutable: 不可变变量 mutable: 可变变量 shadowing: 重定义(遮蔽)一个变量 const: 常量 static: 静态变量 不可变变量(immutable) vs 可变变量...("{}", x); } 重定义特性的其它特点: 重定义特性可以作用于不可变变量 重定义特性可以作用于可变变量 重定义特性不可以作用于 static 变量 重定义特性不可以作用于 const 常量 常量...// 定义一个可变的静态变量 static mut LEVEL: i32 = 5; // 定义一个不可变的静态变量 static CORRECT: i32 = 1; fn main() { /...("{}", LEVEL); } } 静态(static) vs 常量(const) 那么,什么时候使用静态变量?什么时候使用常量呢?

    1.3K20

    C++static声明静态局部变量 | 用static定义变量

    C++static声明静态局部变量 在C++中,有时会希望函数中局部变量的值在函数调用结束后不消失,而保留原来的值,也就是其占用的存储单元不释放,在下一次调用该函数时,这个变量还保留上一次函数调用结束时的值...,这是就需要指定该局部变量为静态局部变量。...静态局部变量和自动变量的区别 静态局部变量在静态存储区内分配存储单元, 在整个程序运行期间都不释放。 自动变量属于动态存储类别,存储在动态存储区空间,函数调用结束后即释放。...    static int num3=3;//定义静态局部变量    num2=num2+1;    num3=num3+1;   return num1+num2+num3;//将num1+num2...C++用static定义变量 更多案例可以go公众号:C语言入门到精通

    1.9K2828

    static 和const的作用面试常问

    点击上方"蓝字"关注我们01、static 关键字>>>1. 局部变量作用:将变量的生命周期延续到程序的整个运行期间,而不仅仅是它所在的函数调用期间。...static int* ptr; // 指针本身是静态的,但它指向的内容可以动态变化02、const 关键字>>>1. 局部变量作用:声明一个只读变量,不能被修改。...全局变量作用:同样声明一个只读变量,可在其他文件中可见(除非与 static 结合使用)。const int globalValue = 100;>>>3....静态常量全局变量当 static 和 const 结合用于全局变量时,表示这个变量只能在定义它的文件内可见,并且其值是不可修改的。...静态常量局部变量当使用 static 和 const 修饰局部变量时,表示该变量的值在函数调用之间保持不变,并且它是不可修改的。

    4600

    static const volatile __weak关键字解析

    这篇文章较为基础,笔者在这里写下来作为对以前知识的一个回顾 static 对于 static 关键字来讲,它既可以用来修饰变量同时也可以用来修饰函数,而变量从大的方向上来讲又分为局部变量和全局变量,static...修饰变量 静态全局变量:使用 static 修饰全局变量之后,其作用域仅仅限于被定义的文件中,其他文件即使使用 extern 声明也没有办法使用它。...静态局部变量:由于是在函数体内定义的,所以就只能够在这个函数里使用,但是由于由 static 修饰的变量总是处在内存的静态区,所以即使这个函数运行结束,这个变量也不会销毁。...const const 修饰的变量被称之为只读变量,其值在编译时不能够被使用,因为编译器在编译时不知道其中存储的内容。...修饰一般变量和数组 使用 const 修饰一些一般的变量或者是数组时可以采用如下的方式: int const i = 2; const int i = 2; 虽然上述的写法不一样,但是其意义是完全一致的

    33510

    【C++】static 变量详解-变量篇

    static修饰变量的话,有两点要注意。 1.变量的存储区域在全局区,不管变量是在函数体内,class内,还是cpp文件内。 2.变量的作用域在离它最近的{}内部,出了{}之外,不可以使用。...为了比较区别,在这里变量名都是a,发现都可以编译通过。这也就表明G++做了处理,可以区分出来不同作用域里面的变量。 为了进一步知道原因,我编译出来了汇编,命令G++ -S *.cpp。...从上到下,我们可以看到,不同函数内的变量static int a; 会在变量前加上对应的函数名,例如: 1.main函数里面的,变成了_ZZ4mainE1a; 2.Fun函数内的,变成了_ZZ4FunvE1a...; 3.全局变量的,变成了_ZE1a;(这里没有粘贴出来,后续补上。)...经过编译器的处理之后,这些源代码中相同名字的变量,在编译之后便变成了唯一的标识符,这也就说明了static作用域的意义了。 ----

    1.1K10

    const修饰指针变量详解

    对于指针的认识,应该很多时候都是从C语言开始,那么const修饰的指针变量到底与指针变量有点什么区别呢?...“` const char *ptr; char const *ptr; char * const ptr; “` 上面三个const修饰的指针变量到底有点什么区别呢?...const 修饰的只是*ptr,*ptr呢?其实就是一个指针变量指向的内存区的内容,被const修饰之后,那么这个内存区的内容就不能够被修改了,但是指针的指向是可以被修改的。...对于**char * const ptr;**中的const修饰的就是ptr,ptr是什么呢?ptr不就是指针变量所存放的地址嘛?...加上const进行修饰之后,那么这个指针变量所存放的地址就不能够被修改了,但是指针指向的内容是可以被修改的。

    34720

    PHP中const,static,public,private,protected的区别

    const: 定义常量,一般定义后不可改变 static: 静态,类名可以访问 public: 表示全局,类内部外部子类都可以访问; private: 表示私有的,只有本类内部可以使用; protected...const与define在定义常量时会有如下区别: const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义, const可在类中使用,define不能。...EVENT = 'const'; static $event = 'static'; public $eventPublic = 'public'; private $eventPrivate...'; //继承父级中的成员变量后,只能访问公共变量 //私有变量和受保护的变量不能在子类中访问 echo $this->eventPublic...static public private protected ================= const static const static public

    69750

    PHP中const,static,public,private,protected的区别

    const: 定义常量,一般定义后不可改变 static: 静态,类名可以访问 public: 表示全局,类内部外部子类都可以访问; private: 表示私有的,只有本类内部可以使用; protected...const与define在定义常量时会有如下区别: const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义, const可在类中使用,define不能。...EVENT = 'const'; static $event = 'static'; public $eventPublic = 'public'; private $eventPrivate...'; //继承父级中的成员变量后,只能访问公共变量 //私有变量和受保护的变量不能在子类中访问 echo $this->eventPublic...static public private protected ================= const static const static public

    1K20

    让你彻底了解const与static的区别

    const的变量知识起到声明的作用,值不能改变。改变则报错。...static static局部变量 将一个变量声明为函数的局部变量,那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中 static 全局变量 表示一个变量在当前文件的全局内可访问 static...函数 表示一个函数只能在当前文件中被访问 static 类成员变量 表示这个成员为全类所共有 static 类成员函数 表示这个函数为全类所共有,而且只能访问静态成员变量 const const 常量...const 形参:func(const int a){};该形参在函数里不能改变 const修饰类成员函数:该函数对成员变量只能进行只读操作 static关键字的作用: (1)函数体内static变量的作用范围为该函数体...,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的static全局变量和函数可以被模块内的函数访问,但不能被模块外其它函数访问; (3)在类中的static成员变量属于整个类所拥有

    14910

    变量 var const let 的区别

    ---- theme: cyanosis 第一章 变量 var const let 的区别 ---- 前言 ECMAScript变量是松散类型的,变量可以保存任何类型的数据,每个变量不过是一个用于保存任意值的命名占位符...有三个关键字可以声明变量,var是在ECMAScript所有版本都可以使用,而const和let只能在ES6版本后使用 ---- 一、var声明 1....} //会输出0 1 2 3 4 三、const声明 const 基本与 let相似,唯一一个重要区别是用它声明变量时必须同时初始化变量值,且尝试修改const声明的变量会导致运行的错误 1.给常量赋值...'; } console.log(name) //bear 4.const的声明限制值适用于它指向的变量的引用 const test = {}; test.name = 'bear' ; //这里可以运行...2.const优先 let次之 使用const声明可以让浏览器运行时强制保持变量不变,在这同时也能迅速发现意外赋值的这种非预期行为。简而言之就是const定义一些不会变的变量,会变的就用let定义。

    51710

    java static再赋值_java static变量可以赋值吗?

    详细内容 java static变量可以赋值吗? 可以赋值的。static的主要作用是静态成员,指该变量的实例在内存中之存放一次。赋值是可以随便改的。...● 第二:实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,static主要有5中使用情况:成员变量、成员方法、代码块,内部类和静态导包。...基本用法: 1、static修饰成员变量:该成员变量属于类变量,可以通过 ClassName.attributeName 直接引用,而不需要new出类的实例。...3、static修饰代码块:仅在类初始化的时候执行一次,且加载顺序是严格按照类中静态资源的定义顺序来加载的;静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。;父类代码块->子类代码块。...4、static修饰内部类:static不能修饰普通类,只能修饰内部类,被static修饰的内部类的创建方式: new OuterClass.InnerClass()。

    2.5K10

    Android 慎用static静态变量

    前言 Android是用Java开发,其静态变量的生命周期遵守Java的设计。 我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区。 当类被卸载的时候,静态变量被销毁。...一、静态变量在类被加载的时候分配内存。 类在什么时候被加载?...也就是说在进程启动的时候,类被加载,静态变量被分配内存。 二、静态变量在类被卸载的时候销毁。...在Android中,静态变量在安卓上不比其他Java环境,不管变量本身写在哪个类里,它一旦被代表组件的类初始化,比如被一个Activity初始化,它就会绑定在这个Activity类中.....也就是说,在Android中静态变量可能随时被系统置空,变为null,其它地方在使用的时候就会产生空指针现象。

    2.7K20
    领券