首页 > 其他分享 >static修饰的与普通的区别

static修饰的与普通的区别

时间:2023-05-30 10:23:33浏览次数:26  
标签:函数 区别 静态 局部变量 源文件 static 修饰 全局变量

static 全局变量、局部变量、函数与普通全局变量、局部变量、函数

static全局变量与普通的全局变量有什么区别?
static局部变量和普通局部变量有什么区别?
static函数与普通函数有什么区别?

答 :全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。

这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

标签:函数,区别,静态,局部变量,源文件,static,修饰,全局变量
From: https://www.cnblogs.com/zhu-jing/p/17442489.html

相关文章

  • 工厂模式和抽象工厂模式区别
    1、工厂模式定义产品接口即可,工厂中生产得是产品对象2、抽象工厂模式需要定义产品接口,工厂抽象类。工厂生产得是具体工厂对象。3、工厂为啥使用抽象类而不使用接口:接口可以实现多个,而继承是单继承。例如:常见工厂,小米,华为,长城,他们都是一个整体,但是不可能出现一个小米华为长城的......
  • [NextJS] getStaticProps
    Continue... Ref: Next.js产品级的React框架-中文开发入门教学-编写静态页面属性getStaticProps  为了爬虫,所以这么写。importHeadfrom'next/head'exportdefaultfunctionHome(props){const{datalist}=props;return(<div>......
  • C语言static篇
    C语言static篇变量#include<stdio.h>voidfunc(){inta=0;printf("%d\t",a);staticintb;printf("%d\n",b);}intmain(){func();return0;}#include<stdio.h>voidfunc(){inta=1;......
  • 服务器和电脑主机的区别
    服务器和电脑主机的区别我们都知道服务器和台式主机有着不同之处,但具体说出个一二三来很多人还是一头雾水,也就是知其然不知其所以然,都是CPU主板 内存 硬盘 电源,撑死就差一个显卡不同,但其实服务器和我们正常使用的台式主机差距很大,即使是内存都有着许多不同,因为用处不一样所以设......
  • 服务器和电脑主机的区别
    服务器和电脑主机的区别我们都知道服务器和台式主机有着不同之处,但具体说出个一二三来很多人还是一头雾水,也就是知其然不知其所以然,都是CPU主板 内存 硬盘 电源,撑死就差一个显卡不同,但其实服务器和我们正常使用的台式主机差距很大,即使是内存都有着许多不同,因为用处不一样所以设......
  • Synchronized和Lock的区别
    本文参考自:https://blog.51cto.com/u_15651175/5545001什么是Lock接口Lock接口是JDK1.5提供的一个锁接口,让程序员可以更灵活地实现锁或者可以使用JDK自带的实现Lock接口的一些锁。与Synchronized相比,Lock接口是显式获取、释放锁,交由程序员去控制什么时候获取和释放锁,除此之外还......
  • 交换机、集线器、路由器和网桥的区别
    交换机、集线器、路由器和网桥是计算机网络中常见的网络设备,它们在网络中发挥不同的作用并位于不同的层次。下面是它们的区别和各自所在的层次:1.集线器(Hub)区别:集线器是一种简单的网络设备,用于将多个计算机连接在一起形成一个局域网。它的主要功能是将接收到的数据包广播到所有......
  • SQL中join后的on和where的过滤条件的区别
     1、原理1.1连接基本概念(1)内连接(innerjoin、join):必须完全满足连接运算(natural、using、on)的左右表数据行。(2)左外连接(leftouterjoin、leftjoin):仅保留左表在连接运算之前的数据行,无匹配的右表列填充null。(3)右外连接(rightouterjoin、rightjoin):仅保留右表在连接运算之前......
  • DNN-HMM和GMM-HMM的简单区别
    GMM-HMM:给定MFCC特征X时,计算每一个状态产生x的概率p(x|a)、p(x|b)....,然后最大的概率就是其对应的状态DNN-HMM:给定MFCC特征X时,直接计算x属于每一个状态的概率p(s|x),最大值就是对应的状态。p(a)是训练集中每个状态出现的概率。 ......
  • Week1.图文并茂解释开源许可证GPL, BSD, MIT, Mozilla, Apache和LGPL的区别
    许可证由松到严排序:MITBSDApacheLGPLGPL图片源自乌克兰程序员PaulBagwell,由阮一峰汉化。MIT(MIT)来源于大学,MIT许可证是史上最为简洁和慷慨(permissive)的开源协议之一。作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你......