在不同语言中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 use printf ( "%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 ...
随机推荐
- Python的虚拟机安装已经如何配置Scrapy for Mac
时间:2018年2月21日 因为时间问题,以下笔记就粗略记录.仅作为个人笔记为用 安装virtualenv和virtualenvwrapper 如何安装的细节下面这篇也有介绍,包括如何使用切换虚拟机也 ...
- django 查询如何使用 or
参考:http://stackoverflow.com/questions/6567831/how-to-perform-or-condition-in-django-queryset django自 ...
- IntelliJ IDEA配置
1.取消idea默认打开工程: 2.导出,导入配置. 导出和导入配置好处:对IDEA配置好后导出配置,方便以后重装电脑或者重装IDEA后可以导入之前配置好的配置.避免重复配置 导出配置:File Ex ...
- MSSQL数据导出到MYSQL
MSSQL数据导出到MYSQL 花了一天时间把MSSQL里的数据导出到MYSQL, 好麻烦,二个数据库都是阿里云买的云服务器. 先上阿里云控制面板,备份下MSSQL数据库,下载备份下来,在本地电脑上还 ...
- 我们为什么要在Android中使用RxJava
本文翻译来自–>Why should we use RxJava on Android 另外: 微凉一季 再另外: 微凉一季 感觉RxJava近期风生水起,不学习一下都不好意思了.洒家也是初学R ...
- windows 端口被占用,并杀死进程的方法
netstat -ano | findstr 8081 查询端口 被什么进程占用 tasklist | findstr 2184 根据进程号 查询任务名称 taskkill /f /t /im jav ...
- ganglia-gmetad 配置文件
gmetad 主要用来收集和汇聚gmond所收集的指标数据的守护进程,通过tcp端口8651监听其他gmetad连接,并向授权的主机提供xml格式的网络状态,gmetad通过tcp端口8652 对交互 ...
- 离线提取域控HASH的方法
1.注册表提取 提取文件,Windows Server 2003或者Win XP 及以前需要提升到system权限,以后只要Administrator权限即可. reg save hklm\sam s ...
- js中的运算符优先级
运算符有何很多,基本的可能都比较熟,单有些优先级很难记住.建议使用“()”将复杂的运算表达式区分好优先级. 我给运算符优先级做了一首小打油诗. 括号成员new函数 直new后置累计数 单目幂算乘除模 ...
- Retrofit2 项目配置
在项目的 app build.gradle 文件中加入 dependencies { // Retrofit2implementation 'com.squareup.retrofit2:retro ...