在不同语言中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 ...
随机推荐
- VNC Viewer 设置屏幕分辨率
1.第一种方法:使用geometry参数进行调整 vncserver -geometry 1280x1024即可,之后通过window下vnc连接后的ubuntu分辨率即为1280x1024了,注意这 ...
- Java读取Excel内容
借助于apathe的poi.jar,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可 本例使用java来读取exc ...
- PEP 492 -- Coroutines with async and await syntax 翻译
因为工作中慢慢开始用python的协程,所以想更好的理解一下实现方式,故翻译此文 原文中把词汇表放到最后,但是我个人觉得放在最开始比较好,这样可以增加当你看原文时的理解程度 词汇表 原生协程函数 Na ...
- [rook] rook的控制流
以下是rook为一个pod准备可用块存储的过程: 1. rook operator运行,并且在k8s每台机器上运行一个rook agent的pod: 2. 用户创建一个pvc,并指定storagecl ...
- ubuntu上Android开发环境及依赖项
[时间:2018-07] [状态:Open] [关键词:ubuntu,系统安装,开发环境搭建,android,工具集] Ubuntu系统版本:v18.04 LTS c/c++ dev (build-e ...
- 【计算机网络】OSI七层模型图解
1.物理层 建立.维护.断开物理连接.(由底层网络定义协议) 2.数据链路层 建立逻辑连接.进行硬件地址寻址.差错校验等功能.(由底层网络定义协议) 将比特组合成字节进而组合成帧,用MAC地址访问介质 ...
- 理解REST和RPC
REST 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 网站开发,完全可以采用软件开发的模式.但是传统上,软件和网络是两个不同的领域,很少有交集:软件开发主要针对单机环境,网络则主要研究 ...
- Win10连接远程桌面的时候提示您的凭证不工作该怎么办?
Win10连接远程桌面的时候提示您的凭证不工作该怎么办?Win10连接远程桌面的时候,提示“您的凭证不工作”.原有保存的远程帐号密码无法使用,导致远程登录系统失败.我这里总结下自己解决的方法,分享给大 ...
- 微信小程序——动态设置swiper的高度
根据小程序的设定,swiper组件默认高度为150px,无法根据内容来撑高.如果里面的内容固定还好说,直接设置一个高度就可以了.要是里面内容是动态变化的,这个特性使得我们使用这个组件的时候感到诸多不便 ...
- 卷积神经网络(Convolutional Neural Network, CNN)简析
目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...