首页 > 其他分享 >static 关键字

static 关键字

时间:2023-09-16 18:55:06浏览次数:31  
标签:函数 局部变量 关键字 static 修饰 全局变量

static关键字的作用和场景大致可分为2个(或者3个),即修饰变量和函数(或者修饰局部变量、全局变量和函数),这三种场景下的static关键字作用不同。

修饰局部变量:

由于是静态局部变量,只对本作用域有效,其他函数不可见;可以被重新赋值(之前错把静态变量只初始化一次理解为只能幅值一次);但是只能被初始化一次。这是它的特性。

以下实例代码能帮助理解

	for (int i = 0; i < 5; i++)
	{
		static int t_static = 0;
		int t = 0;
		t = t + 2;
		t_static = t_static + 2;
		printf("第%d次循环:t=%d; t_static=%d\n", i,t, t_static);
	}

输出打印:

第0次循环:t=2;    t_static=2
第1次循环:t=2;    t_static=4
第2次循环:t=2;    t_static=6
第3次循环:t=2;    t_static=8
第4次循环:t=2;    t_static=10

除了初始化和内部存储区域外,静态局部变量其他性质和局部变量是差不多的,比如在for循环外不能使用t_static变量,必须是同一作用域,在某一个函数声明静态局部变量,其对另一个函数是不可见的。

static 修饰局部变量后,变量的储存区域也发生了改变,由原来的动态存储区变为静态存储区。程序未初始化变量时默认初始化为0;同时变量的生存周期也发生改变,变为从定义到程序结束。但作用域未改变。

变量的存储区域、静动态、全局和局部等知识点参考文章C语言存储类别

修饰全局变量

static修饰全局变量,其实就是把该变量的作用域缩小了。一般全局变量对被程序编译时所有的.c文件可见,即其他文件也可使用该全局变量,但是使用static关键字修饰后,只能对定义变量的那个.c文件可见,其他文件的函数不可调用。

image

image

修饰函数

static关键字修饰函数与修饰全局变量作用类似,也是改变该函数的链接属性,让该函数具有文件作用域,即只能在当前文件中使用。

参考文献

  1. 【C语言】 Static关键字的用法和详解

标签:函数,局部变量,关键字,static,修饰,全局变量
From: https://www.cnblogs.com/gofan-SiTu/p/17707120.html

相关文章

  • 长达 1.7 万字的 explain 关键字指南!
    当你的数据里只有几千几万,那么SQL优化并不会发挥太大价值,但当你的数据里去到了几百上千万,SQL优化的价值就体现出来了!因此稍微有些经验的同学都知道,怎么让MySQL查询语句又快又好是一件很重要的事情。要让SQL又快又好的前提是,我们知道它「病」在哪里,而explain关键字就是MyS......
  • .net链接mysql报错:给定关键字不在字典中,解决方案
    如果看到这个报错信息,大概率是的原因是:1、连接字符串中编码和数据库实际编码不一致。解决方案:修改连接字符串中的编码即可,保证和mysql中编码一致。 2、MySql.Data.dll版本不一致。解决方案:去mysql官网下载对应版本的dll;或使用VS的Nuget更新MySql.Data.dll。......
  • mysql错误记录 - 关键字generated
    今天想直接操作flowable的表ACT_GE_BYTEARRAY表字段如下字段名字段含义ID表示唯一标识符的字符串,用于标识每个字节数组。REV_表示字节数组的版本号。NAME_表示字节数组的名称。DEPLOYMENT_ID_表示字节数组所属的部署ID。BYTES_表示存储在数据库中的字......
  • 根据指定关键字搜索指定时间范围内的 SAP CRM 中间件 BDOC 的 ABAP 小工具分享
    工具源代码如下:REPORTzscan_bdoc_via_keyword.PARAMETERS:startTYPEsmw3_bdoc-snd_dateOBLIGATORYDEFAULTsy-datlo,endTYPEsmw3_bdoc-snd_dateOBLIGATORYDEFAULTsy-datlo,keywordTYPEstringLOWERCASEOBLIGATORYDEFAULT'CR......
  • volatile关键字,使变量在多个线程之间可见
    在多线程中继承Thread类和实现runnable接口的别并不大,但是,如果是需要继承Thread之外的其他接口,就可以使用实现runnable接口的方式。测试类:publicclassPrintString{privatebooleanisContinuePrint=true;publicbooleanisContinuePrint(){returnis......
  • 亚马逊API接口解析,实现按关键字搜索商品
    要解析亚马逊API接口并实现按关键字搜索商品,你需要按照以下步骤进行操作:了解亚马逊开发者中心:访问亚马逊开发者中心,并了解相关的API文档、开发者指南和规定。注册开发者账号:在亚马逊开发者中心上注册一个开发者账号,并创建一个应用,获取到API权限。获取API密钥:为了使用亚马逊API接......
  • static nat(network address translate)
    核心1、出接口配置natstatic转换,命令如下interfaceGigabitEthernet0/0/1ipaddress20.1.1.1255.255.255.0 natstaticglobal20.1.1.3inside10.1.1.2netmask255.255.255.255natstaticglobal20.1.1.4inside10.1.1.3netmask255.255.255.255注意:此种转换方式......
  • C语言 extern 关键字
    注意函数内部定义变量intg_x,g_y;和externg_x,g_y是完全不一样的,前面是局部变量,后面是已经定义好的外部全局变量,这里是引用外部全局变量。#include"stdio.h"#include"stdlib.h"#include"utils.h"#include"gnu/libc-version.h"voidmain_test(void){printf(......
  • 苏宁API接口解析,实现按关键字搜索suning商品
    苏宁API接口提供了多种搜索商品的方式,其中包括按关键字搜索。下面是一个简单的示例,演示如何使用苏宁API接口实现按关键字搜索商品:importrequestsimportjson#苏宁API接口地址api_url="https://api.suning.com/item/search"#请求参数params={"ke......
  • C++ virtual关键字
    用来修饰父类中的函数:1、修饰父类中的普通函数:1#include<iostream>2#include<string>3#include<stdlib.h>45usingnamespacestd;67classbase8{9public:10voidfun1(){cout<<"thisisbase::fun1"<<endl;}......