static关键字在C和C++中的使用方法

一、C语言的static关键字的两种使用方法

1)、用于函数内部修饰变量,即函数内的静态变量。这种变量的生存期长于该函数,是的函数具有一定的“状态”,使用静态变量的函数一般是不可重入的,也不是线程安全的,比如strtok()

2)用在文件级别(函数体外),修饰变量或函数,变量该变量或函数只能在文本可见,其他文件看不到,也访问不到该变量或函数。

二、C++语言的static关键字的四种用法

由于C++引入了class,在保持与C语言兼容的同时,static关键字又有了两种新用法:

3)、用户修饰class的数据成员,即所谓“静态成员”,这种数据成员的生存期大于class的对象(实体/instance),静态数据成员是每个class有一份,普通数据成员是每个iinstance有一份,因此也分别叫做class variable和Instance variable。

4)、用于修饰class的成员函数,即所谓“静态成员函数”,这种成员函数只能访问class variable或其他静态程序函数,不能访问instance variable或者instance method.

这几种用法可以相互结合,比如C++的成员函数(无论static还是instance)都可以有其局部的静态变量(上面的用法1)。对于class template和function template,其中的static对象的真正个数跟template instantiation(模板具现化)有关。

时间: 2024-08-30 01:12:45

static关键字在C和C++中的使用方法的相关文章

Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。

Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnb

JAVA面试题 浅析Java中的static关键字

面试官Q1:请说说static关键字,你在项目中是怎么使用的? static 关键字可以用来修饰:属性.方法.内部类.代码块: static 修饰的资源属于类级别,是全体对象实例共享的资源: 使用 static 修饰的属性,静态属性是在类的加载期间初始化的,使用类名.属性访问 案例说明 ①修饰成员变量 package com.ant.param; public class StaticFieldDemo { public static void main(String[] args) { Foo

Java再学习——深究static关键字

一.static关键字的用途 可以在没有创建对象的情况下来进行(方法/变量)调用.也就是,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问. 1,static修饰方法 static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了.并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变

Java基础(二)-static关键字分析

static关键字是我们在编程中经常会使用到的,但有些可能只知其然而不知其所以然.下面介绍static关键字的作用再通过例子结合说明. static关键字共有五种作用(先说明static所修饰的不会改变其(private.protected.default和public)作用域的范围): 修饰成员变量(非局部变量) 修饰成员方法 修饰代码块 修饰内部类 静态导包 怎么会有五种呢,大部分初学者对前面两种或者加上第三种还是很熟悉的,第四种情况可能一开始的人就比较少知道了,第五种就更少人知道了.下面一

C++ 类模板三(类模版中的static关键字)

//类模版中的static关键字 #include<iostream> using namespace std; /* 类模板本质上是c++编译器根据类型参数创建了不同的类, c++编译器在利用类模板生成类的时候会为每个类生成一个static变量 那么对于类中的static关键字就非常好理解了 static关键字修饰的变量是属于类的 同一个类的对象共享类的static静态变量 类模板中的static修饰的变量数据类型必须是确定的 不可以是类型参数 因为静态变量在类对象之前初始化 这时候还没有通

5.JAVA基础复习——JAVA中的static关键字作用与用法

static关键字: 特点: 1.static是一个修饰符,用于修饰成员.(成员变量,成员函数)static修饰的成员变量 称之为静态变量或类变量. 2.static修饰的成员被所有的对象共享. 3.static优先于对象存在,因为static的成员随着类的加载就已经存在. 4.static修饰的成员多了一种调用方式,可以直接被类名所调用,(类名.静态成员). 5.static修饰的数据是共享数据,对象中的存储的是特有的数据. 1 private static int age;//用static

(转)Java中的static关键字解析

转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: "static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法.这实际上正是static方法的主要用途." 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键

Java 中的static关键字的解释与使用

static的意思是静态.用来修饰成员变量和成员方法,被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享.只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 1.static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量. 两者的区别

Java中的static关键字解析

http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的.而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法.这实际上正是static方法的主要用途.” 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句