C++ static 函数的问题 近日读 C++ primer 中static 一章 , 有这么一句话, “静态成员函数的声明除了在类体中的函数声明前加上关键字static 以及不能声明为const 或volatile 之外与非静态成员函数相同出现在类体外的函数定义不能指定关键字static” 为什么不能在类体外指定关键字static , 这样设计的目的是什么,有什么用处? 2# 怎么说呢, 这是一个作用域的问题!成员函数的作用域是类域, 而在类体外加上static不是表示静态函数,表示的是函数…
关键字:sizeof .#define.typedef.const.static.register.extern sizeof 1. 作用:求数据所占得内存空间大小 2. 本质:求数据得类型所占的内存空间大小 3. 格式:size_t sizeof(数据) 4. 返回值:数据所占的内存空间大小,单位:字节 #include<stdio.h> int main() { char a ='A' + 1; int len; len = sizeof(a); printf("%d\n&quo…
首先介绍两个概念: 一.变量的生存周期: 变量从建立到撤销的时间段成变量的生存周期.静态变量,从变量产生到整个程序执行结束.当函数使用变量结束后,变量的存储空间依然存在,变量的值也会随着函数的对其的使用而改变.如在函数内定义了一个static变量,那第一次调用该函数后,该变量的值将会被保留,当第二次被调用时,该变量的值还是第一次调用结束时的值.动态变量,顾名思义,变量的存储空间是随着函数的调用动态产生和撤销的.如,在一个函数里定义了动态变量,变量的周期指从变量建立到函数结束,而不是这个程序结束.…
在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变.2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量.3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用.大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分.这是一个应试者的严重的缺点,因…
转自:https://blog.csdn.net/u010757264/article/details/49932829 C++中变量.函数的属性包括数据类型和存储类别.存储类别分为静态存储和动态存储两类,指数据在内存中的存储方式(静态和动态),包含auto,static,register,extern四种.auto register是用来修饰变量的,static extern修饰变量函数都可以. 变量的生存周期 变量从建立到撤销的时间段成变量的生存周期.静态变量,从变量产生到整个程序执行结束.…
参考文章:http://www.cocoachina.com/ios/20161110/18035.html 1.const 这个单词翻译成中文是“常量”的意思.在程序中我们知道“常量”的值是不能变的,固定的.所以const关键字的作用就呼之欲出了: (1) const用来修饰右边的基本变量或指针变量(2) 被修饰的变量只读,不能被修改 下面举个最简单的例子: //声明一个int类型的变量a,变量初始化值为10,并且变量a左边有一个const关键字修饰 int  const  a = 10; /…
static 全局的,可以改的,如果在一个类中声明static,类中其他地方用到的时候,也是使用的改变量.和java类似,但不能用类名直接访问. const 是常量,不可以改的 extern 1.假如其他a类中已经声明了meString,你在另外一个b类中想使用这个变量,可以extern NSString* meString;会得到a类中同样的值,且可重新赋值.(参考点击打开链接 参考:点击打开链接 2.就是它的字面意思外部的,不是扩展,如果外部没定义是不能用的,当然还有一个其他用法extern…
static static用于定义静态变量,静态变量只会被初始化一次,并且直到程序销毁时才会释放 static NSString *str = @"asdfa"; const const用于定义常量 NSString* const URL = @"www.baidu.com"; extern(外部变量) extern表明定义的变量是外部变量 .h文件 extern NSString * const king; .m文件 NSString * const king =…
extern: extern修饰变量,声明该变量为外部文件的全局变量.若使用外部全局变量,必须用extern声明. extern修饰函数,声明该函数为外部函数.extern修饰的函数形参必须与原函数一致,否则可能导致传参出错,且编译器不会报警.建议声明外部函数省略掉extern. const: 定义常量,即用const声明的变量值不能被修改. const char* p, char const* p, char* const p的区别: C语言中const不能修饰*,因此const char*…
本文将主要从static在C和C++共有的作用及C++特有的作用两个方面进行解析. 在C和C++中共有的作用 隐藏(对变量.函数均可) 当同时编译多个文件时,所有未加static前缀的全局变量或全局函数都具有全局性.举例来说明,同时编译两个源文件,一个是a.c,另一个是main.c,如下: //a.c char a = 'A'; // global variable void msg() { printf("Hello\n"); } a.c //main.c int main() {…
视频地址:https://www.ixigua.com/6935761378816819748 粉丝提问 粉丝问题,总结一下: 关键字static的使用方法. 要想搞清楚关键字static的使用方法,必须首先搞清楚,可执行程序段的分类以及各段在内存区的逻辑地址的映射. 一.可执行程序内存分配 1. 可执行程序程序分段 一个程序的3个基本段:text段,data段,bss段 BSS BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存…
A. 面向过程: 1. 静态全局变量:在全局变量前,加上关键词static,该变量就被定义成为一个静态全局变量. 1.1. 特点: |该变量在全局数据区分配内存: |未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0): |静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的: |静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量.对于一个完整的程序,在内存中的分布情况如下…
在Java中,将关键字static分为三部分进行讨论,分别为Java静态变量.Java静态方法.Java静态类 Java Static Variables Java instance variables are given separate memory for storage. If there is a need for a variable to be common to all the objects of a single java class, then the static mod…
static 在Java中声明属性.方法时,可使用关键字static来修饰. 1.static变量       按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量. 两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的).对于实例变量,没创建一个实例,就会为实例…
JAVA十分常见的关键字static & final 总的来说final表示常量,即不可更改的:而static表示静态,即全局的 1. final 类:不能被继承 2. final 方法:能被继承,不能覆盖(修改),能类外调用:与private对比,private能被继承,不能覆盖(修改),但不能类外调用 3. final 变量:代表常量,只能被赋值一次,赋值后不能修改 1. static 方法:没有实例化对象也能调用,所以内部也必须是static,而且必须实现,不能是abstract 2. s…
在Java类中声明属性.方法和内部类时,可使用关键字static作为修饰符,static标记的属性和方法可以由整个类进行共享,因此static修饰的属性称为类成员或者称为类方法:static修饰的方法称为类方法或者静态方法: static修饰的语句块在其所属的类中被载入JVM时被执行一次,一般用于一次性的初始化的工作:而非static语句块是每创建一个对象就执行一次,其运行时机实在对象分配空间及实例默认和显示初始化之后和执行构造方法体中语句之前: /***static 操作使用*@author…
为什么要说static妙,它确实是妙,在软件开发或者单片机开发过程中,大家总以为static就是一个静态变量,在变量类型的前面加上就自动清0了,还有就是加上static关键字的,不管是变量还是关键字,在局部变量中,变量仅限于局部可见,在全局区中,static变量或函数仅限于本文件可见,当然还有一个重要的特性被忽略了.... 就是static修饰的局部变量 它的数值 是上一次函数调用结束之后的数值.正是因为有了这个特性,我们就可以利用zh这个特性完成很多功能.精简总结一下static的特性: 关键…
前面介绍嵌套类的时候讲到了关键字static,用static修饰类,该类就变成了嵌套类.从嵌套类的用法可知,其它地方访问嵌套类之时,无需动态创建外层类的实例,直接创建嵌套类的实例就行.其实static不光修饰类,还能用来修饰方法.修饰属性等等,例如大家学习Java一开始就遇到的main方法,便为static所修饰.当一个成员方法被static修饰之后,该方法就成为静态方法:当一个成员属性被static修饰之后,该属性就成为静态属性.静态方法和静态属性,它俩同嵌套类一样不依赖于所在类的实例.外部若…
关键字static作用如下: 1. 为某个基本数据类型或对象分配单一的存储空间. 2. 实现某个属性或方法与类关联.在类被加载后类名可以直接调用静态成员方法(下面简称静态方法)或者访问静态成员变量(下面简称静态成员变量).对象也可以做到. 有4种使用情况: 1. 静态属性即静态成员变量 2. 静态方法 3. 静态代码块 4. 静态成员类 静态方法 因为静态方法不依赖于对象,所以静态方法内部不能使用this.因为非静态方法和非静态成员变量依赖于对象,所以静态方法内部不能调用非静态方法或者访问非静态…
1.static的意义 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 用public修饰的static成员变量和成员方法本质是全局变…
一.基础概念 静态关键字 static 是成员修饰符,直接用于修饰成员. (一)特点: 1.被静态修饰的成果,可以直接被类名所调用. 2.静态成员优先于对象存在. 3.静态成员随着类的加载而加载.随着类的消失而消失.静态成员的生命周期很长. (二)注意事项: 1.静态方法只能访问静态成员,不能访问非静态成员. 2.静态方法中不能出现this或者super关键字. 3.主函数是静态的. (三)什么时候用: 1.成员变量:如果数据在所有对象中都是一样的.直接用静态修饰. 2.成员函数:如果函数没有访…
不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块和内部类. Java把内存分为栈内存和堆内存,其中栈内存用来存放一些基本类型的变量.数组和对象的引用变量,堆内存主要存放一些引用类型的变量.在JVM加载一个类的时候,若该类存在static修饰的成员变量和成员方法…
php中static关键字使用: 情景1:静态变量 使用static关键字定义静态变量 静态变量:只存在于函数作用域内,也就是说,静态变量只存活在栈中.一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会.就是说,下次再调用这个函数的时候,该变量的值会保留下来. 示例代码: 1 <?php 2 function test_1(){ $num = 0; $num ++ ; 5 echo $num; } function test_2(){ static $num = 0; $num…
static关键字的基本作用就是方便在没有创建对象的情况下调用类的方法/变量, static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问. static关键字可以修饰类的成员变量,成员方法,也可以编写静态代码块来优化程序的性能. 注意:局部变量不能被声明为static变量: 虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的: 即使没有显示地声明为static,类的构造器实际上也是静态方法:…
关键字static的神奇妙用在今天的学习中,我了解到关键字static的作用,下面我来给大家分享一下.①static 修饰局部变量只改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束生命周期才结束,但是变量的作用域没有改变.代码实现对比如下图所示 ②//全局变量支持跨文件访问static修饰全局变量,那么该全局变量只能在本文件有效,只能在本文件被访问.③//函数支持跨文件访问static修饰函数,那么该函数只能在本文件有效,只能在本文件使用.#这就是我想分享给大家的,希望对你们有…
java关键字static使用总结 1.static修饰的方法被称之为静态方法也叫做类方法,加static的方法,可以通过类名直接访问,不加static的方法只能通过对象名访问. 静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法,** 因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的a…
(1)auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的. (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率. (3)static 常见的两种用途: 1>统计函数被调用的次数; 2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的…
对内存资源存放位置的限定 1. auto 默认值---分配的内存都是可读可写的区域 auto int a; 区域如果出现 {} 我们认为在栈空间 2. register register int a; 限制变量定义在寄存器上的修饰符 定义快速访问的变量,放在寄存器内计算速度更快! 编译器会尽量的安排CPU的寄存器去寄存这个变量a,如果寄存器不足时,变量a还是会被放在存储器中. 内存(存储器)            寄存器 3. static 静态 应用场景: 修饰3种数据 (1) 函数内部的变量…
extern extern的两个作用: 修饰变量或函数,提示编译器此变量或函数是在其它文件中定义的,但要在此处引用: 进行链接指定,如: extern "C" void fun(int a, int b);  告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,: static static的主要作用: static局部变量,静态变量,函数返回时不会销毁: static全局变量,仅在当前文件可见: static函数,仅在当前文件可见: 修饰类成员,静态成员为…
C语言中: 一.register变量 关键字regiter请求编译器尽可能的将变量存在CPU的寄存器中.有以下几点注意的地方. register变量必须是能被CPU寄存器所接受的类型,这通常意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度.但是,有些机器的寄存器也能存放浮点数. register变量可能不存放在内存中,所以不能用取址符运算符“ & ”. 只有局部变量和形参可以作为register变量,全局变量不行. 静态变量不能定义为register. 二.stat…