在不同语言中static的用法
-
static
(计算机高级语言)
C++中
面向过程
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//Example1#include <iostream>using namespace std;void fn(); //声明函数static int n; //声明静态全局变量int main(){ n = 20; //为n赋初值 printf("%d", n);//输出n的值 fn(); //调用fn函数}void fn(){ n++; //n的值自加一(n=n+1) printf("%d", n); //输出n的值} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//Example2//File1第一个代码文件的代码#include <iostream>void fn(); //声明fn函数static int n; //定义静态全局变量int main(){ n = 20; cout<<n<<endl; fn();}//File2第二个代码文件的代码#include <iostream.h>extern int n;void fn(){ n++; printf("%d", n);} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//Example3#include <iostream>#include <stdio.h>void fn();int main(){ fn(); fn(); fn();}void fn(){ static int n = 10; printf("%d", n); n++;} |
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//Example4#include <iostream>static void fn();//声明静态函数int main(){ fn();}void fn()//定义静态函数{ int n = 10; printf("%d", n);} |
面向对象
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
//Example5#include <iostream>using namespace std;class Myclass{ public: Myclass(int a, int b, int c); void GetSum(); private: int a; int b; int c; static int Sum;//声明静态数据成员};int Myclass::Sum = 0;//定义并初始化静态数据成员Myclass::Myclass(int a,int b,int c){ this->a = a; this->b = b; this->c = c; Sum += a + b + c;}void Myclass::GetSum(){ cout<<"Sum="<<Sum<<endl;}int main(){ Myclass M(1, 2, 3); M.GetSum(); Myclass N(4, 5, 6); N.GetSum(); M.GetSum();} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
//Example 6#include <iostream>using namespace std;class Myclass{ public : Myclass(int a, int b, int c); static void GetSum(); // 声明静态成员函数 private : int a, b, c; static int Sum; //声明静态数据成员};int Myclass::Sum=0; //定义并初始化静态数据成员Myclass::Myclass(int a, int b, int c){ this->a = a; this->b = b; this->c = c; Sum += a + b + c; //非静态成员函数可以访问静态数据成员}void Myclass::GetSum() //静态成员函数的实现{ // cout<<a<<endl; //错误代码,a是非静态数据成员 cout<<"Sum="<<Sum<<endl;}int main(){ Myclass M(1, 2, 3); M.GetSum(); Myclass N(4, 5, 6); N.GetSum(); Myclass::GetSum();} |
C语言中
|
1
2
3
4
5
6
7
|
int main(void){extern char a; // extern variable must be declared before useprintf("%c ", a);(void)msg();return 0;} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <stdio.h>int fun(void){static int count = 10; // 此语句只在函数第一次调用时执行,后续函数调用此变量的初始值为上次调用后的值,每次调用后存储空间不释放return count--;},int count = 1;int main(void){printf("global\t\tlocal static\n");for(; count <= 10; ++count)printf("%d\t\t%d\n", count, fun());return 0;} |
|
1
2
3
4
5
6
7
8
|
#include <stdio.h>int a;int main(void){int i;static char str[10];printf("integer: %d; string: (begin)%s(end)", a, str);return 0;} |
JAVA语言中
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// Demonstrate static variables,methods,and blocks.class UseStatic{ static int a = 3; static int b; static void meth(int x) { System.out.println("x = " + x); System.out.println("a = " + a); System.out.println("b = " + b); } static { System.out.println("Static block initialized."); b = a * 4; } public static void main(String args[]) { meth(42); }} |
|
1
2
3
4
5
6
7
|
static class CompanyEmployee{ public static string GetCompanyName(string name) { ... } public static string GetCompanyAddress(string address) { ... }} |
|
1
|
String M_string1 =CompanyEmployee.GetCompanyName(M_string2) |
|
1
2
3
4
5
6
7
8
|
static class CompanyEmployee{//静态类 public string GetCompanyName(string name) { ... } //没有Static public static string GetCompanyAddress(string address) { ... }}CompanyEmployee M_CompE = new CompanyEmployee();String M_string1 =M_CompE.GetCompanyName(M_string2);//直接引用 |
C#语言中
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MyNamespace{ class Program { public static void Main(string[] args) { Console.WriteLine("返回数组的和"); int[] values = { 1,2,3,4,5}; int sum = Sum(values); Console.WriteLine(sum); } //计算数组的和 static int Sum(int[] valuesValue) { int sum = 0; for (int i = 0; i < valuesValue.Length; i++) { sum = sum + valuesValue[i]; } return sum; } }} |
- 参考资料
-
- 1.Stephen Prata.C++ Primer Plus 5th:sams,2005
- 2.C++中的static怎么用 .百度文库.2017-10-09[引用日期2017-10-17]
在不同语言中static的用法的更多相关文章
- c语言中static的用法,包括全局变量和局部变量用static修饰
一.c程序存储空间布局 C程序一直由下列部分组成: 1)正文段--CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)--在程序中所有 ...
- c语言中static的用法
1.static定义变量: 1).局部: a.静态局部变量在函数内部定义,生存期为整个源代码,但作用域与自动变量相同,只能在定义的函数里面使用.退出该函数后,虽然此变量还存在内存中,但不能使用. b. ...
- c语言中static关键字用法详解
个人总结: 1.C不是面向对象的,在c中static修饰的变量或函数仅在当前文件中使用 2.C可以对局部变量使用static修饰(注意面向对象的java则不行),其放在全局区一直存在 概述static ...
- C语言中static用法介绍
C语言中static用法介绍 对于新手来说,很多东西的用法还不是很清楚,我们今天一起来看看C语言中static用法介绍 1.声明了static的变量称为静态变量,根据作用域的不同又分为 ...
- C语言中static的作用及C语言中使用静态函数有何好处
转自:http://www.jb51.net/article/74830.htm 在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0. 在C语言中,static ...
- C语言中qsort函数用法
C语言中qsort函数用法-示例分析 本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...
- C语言中static的使用方法【转】
本文转自:http://blog.csdn.net/renren900207/article/details/21609649 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量 ...
- c语言中static 函数和普通函数的区别
C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放 ...
- C语言中sizeof()的用法
语法 sizeof有三种语法形式: 1.sizeof(object); //sizeof(对象); 2.sizeof(type_name); //sizeof(类型); 3.sizeof object ...
随机推荐
- SNF快速开发平台2018-移动端代码生成器已发布
各位小伙伴期待已久的移动端已经推出,在此基础上我们又进行配套了代码生成器,以达到高速开发,简化代码等优点. 当然也需要有强大的组件库及标准程序的支撑,同时要有强大的后台做后盾来达到移动端强大功能的施展 ...
- haproxy+keepalived(涵盖了lvs,nginx.haproxy比较)
文章转载自: haproxy+keepalived https://cloud.tencent.com/developer/article/1026385 网络四层和七层的区别 https: ...
- 安装sqlserver后 服务启动过几秒就自动停止
今天安装sqlserver2014后 发现启动2014的服务,过几秒就会自动停止 通过查看windows日志发现是系统库路径报错~ google了下 发现 "重新生成系统库"就能解 ...
- Openfire 单人聊天和多人聊天(发送消息、接收消息)
Openfire 单人聊天和多人聊天(发送消息.接收消息) 一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFrie ...
- Python类中的装饰器在当前类中的声明与调用
[本文出自天外归云的博客园] 我的Python环境:3.7 在Python类里声明一个装饰器,并在这个类里调用这个装饰器.代码如下: class Test(): xx = False def __in ...
- C语言 · 数的划分
算法训练 数的划分 时间限制:1.0s 内存限制:256.0MB 锦囊1 使用动态规划. 锦囊2 用F[i,j,k]表示将i划分成j份,最后一份为k的方案数,则F[i,j,k]= ...
- Java多线程:Java内存模型
参考资料: 程晓明:Java内存模型 <Java并发编程的艺术> <深入理解Java虚拟机:JVM高级特性与最佳实践>
- 【算法】八皇后问题 Python实现
[八皇后问题] 问题: 国际象棋棋盘是8 * 8的方格,每个方格里放一个棋子.皇后这种棋子可以攻击同一行或者同一列或者斜线(左上左下右上右下四个方向)上的棋子.在一个棋盘上如果要放八个皇后,使得她们互 ...
- Flask-SQLAlchemy 中多表链接查询(不使用外键)
SQLAlchemy 是一个功能强大的 ORM . Flask-SQLAlchemy 是一个 Flask 插件,它让我们在 Flask 框架中使用 SQLAlchemy 变得更容易. 本篇介绍我在使用 ...
- 基于FeignClient提供简单的用户查询服务
前言: 由于系统升级,之前的员工数据库(mongo库)被弃用,改为用python维护的mysql库,其他系统访问通过http请求,表结构对外不可见,其他系统之前对员工mongo库的依赖要解除.每套系统 ...