首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
C语言中:static与extern对变量和函数的作用
】的更多相关文章
C语言中:static与extern对变量和函数的作用
1.两者对全局变量 static对全局变量,表示定义一个内部变量 extern对全局变量,表示声明一个外部变量 说明: 1.内部变量:定义的变量只能在本文件中访问,不能被其他文件访问. 2.不同文件中的同名的内部变量互不影响. 3.外部变量:是指定义的变量可被同一工程中其他文件所访问, 4.默认情况下,所有的全局变量都是外部变量 5.同一工程项目中,不同文件中的同名的外部变量,代表着同一变量,指向内存中同一内存. 2.两者对函数作用 static对函数作用:表示定义和声明一个内部函数 exter…
c语言中static、extern、void的重载
static: 1.在函数内部,表示该变量的值在各个调用间一直保持延续性: 2.在函数这一级,表示该函数只对本文件可见. extern: 1.用于函数定义,表示全局可见(属于冗余的): 2.用于变量,表示它在其他地方定义. void: 1.作为函数的返回类型,表示不返回任何值: 2.在指针声明中,表示通用指针的类型: 3.位于参数列表中,表示没有参数.…
C语言中static变量详解
Static翻译出来是“静态”“静止”的意思,在C语言中的意思其实和它的本意差不多,表示“静态”或者“全局”的意思,用来修饰变量和函数.经static修饰过后的变量或者函数的作用域或者存储域会发生变化,而由static修饰的变量在初始值方面也会表现出static关键字的优势.想知道经static修饰过后的变量或者函数的作用域或者存储域发生了什么变化吗,发生变化的原因是什么吗?请大家继续往下看! 一.c程序的内存分布 既然static是用来修饰变量和函数的,而变量和函数又是组成c程序必不可少的,C…
C语言中static的作用及C语言中使用静态函数有何好处
转自:http://www.jb51.net/article/74830.htm 在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0. 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条,分别是: 一是隐藏功能,对于static修饰的函数和全局变量而言 二是保持持久性功能,对于static修饰的局部变量而言. 三是因为存放在静态区,全局和局部的static修饰的变量,都默认初始化为0 下面我逐一给大家介绍: (1)先来介绍它的第一条…
C语言中static的使用方法【转】
本文转自:http://blog.csdn.net/renren900207/article/details/21609649 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式.这两者在存储方式上并无不同.这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的. 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同…
c语言中static 函数和普通函数的区别
C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里. 3)非初始化数据段(bss段)——在程序中没有初始化的全局变量:内核将此段初始化为0. 4)栈——增长方向:自顶向下增长:自动变量以及每次函数调用时所需要保存的信息(返回地址:环境信息). 5)堆——动态存储分. 在全局变量之前加上关键字static,全局变量就被定义成为一个全局静态变量.…
C语言中static用法介绍
C语言中static用法介绍 对于新手来说,很多东西的用法还不是很清楚,我们今天一起来看看C语言中static用法介绍 1.声明了static的变量称为静态变量,根据作用域的不同又分为静态局部变量与静态全局变量.其中静态局部变量是在函数内声明的static变量,静态全局变量是在函数外声明的static变量.虽然作用域不同,但是都是在编译期间分配内存,使用静态存储的方式(其值存放在静态存储区),在程序整个执行期间都是存在的.它们之间的区别是: a.静态局部变量的作用域仅限于…
C语言中,数组名作为参数传递给函数时,退化为指针
C语言中,数组名作为参数传递给函数时,退化为指针 C语言中,数组名作为参数传递给函数时,退化为指针:需要数组大小时, 需要一个参数传数组名,另一个传数组大小. 数组名做函数参数时,就相当于指针了.sizeof对指针操作结果应该是4. 一般函数参数为数组时,可以有两个参数,一个数组名,一个数组长度的. 首先C语言里面不支持数组作为形参来进行调用, 例如函数void fun(int a[]);里面的a实际上在进行编译时,是作为指针来处理的,所以上面的函数完全等价于void fun(int *a…
C语言中static extern的使用
10:30:22 2019-08-20 基础不牢 瞬间爆炸 参考资料:https://blog.csdn.net/ts_54eagle/article/details/4418627 https://blog.csdn.net/xingjiarong/article/details/47656339 https://blog.csdn.net/xingjiarong/article/details/47656339 看看C Primer Plus上是怎么定义的 先说说作用域 分为4种:块作用域…
C语言中static关键字的作用
static的作用(精辟分析) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 char a = 'A'; // global variable void msg() { printf("Hello\n"…
C语言中static作用
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 char a = 'A'; // global variablevoid msg() { printf("Hello\n"); } 下面是main.c的内容 i…
C语言中static关键字的用法
C记得还是大一时学的,现在觉得好久没用了,又捧起来看看.今天刚看到有关static关键字,仔细地看了一遍<C和指针>这本书中的解释,现在觉得清楚多了. 首先,我们将static关键字,修饰分为两类,一类是修饰变量,另一类则是修饰函数.下面我就分这两类来阐述下我个人的理解. 一 .修饰变量 static修饰变量我们也分为两类,一类是修饰全局变量,另一类则是修饰局部变量. (1)修饰全局变量 全局变量是不再任何代码块中声明的变量(说直白点就是全局变量时在{}外面声明的变量). 例如: #inclu…
在不同语言中static的用法
static (计算机高级语言) 编辑 像在VB,C#,C,C++,Java,PHP中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN.ALGOL.COBOL.BASIC.LISP.SNOBOL.PL/1.Pascal.PROLOG.Ada等语言中也是有出现的,只是有着不同的作用,对于其具体作用,读者有需要的时候是可以具体查阅的. 中文名 static 分 类 关键字 举 例 VB,C#,C,C++,PHP 来 自 高级计算机语言 目录…
对C语言中static的理解
对C语言中的static关键字的深入理解 在一次面试的时候面试官问我static全局变量与全局变量的区别,之前虽然用过但是并没仔细去搞懂他,这次来细心的学习一下. 基本概念 使用static有三种情况: 函数内部static变量 函数外部static变量 static函数 函数内部的static变量,关键在于生命周期持久,他的值不会随着函数调用的结束而消失,下一次调用时,static变量的值,还保留着上次调用后的内容. 函数外部的static变量,以及static函数,关键在于私有性,它们只属于…
C 语言中 static 的作用
在 C 语言中,static 的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏 当我们同时编译多个文件时,所有未加 static 前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是 a.c,另一个是 main.c. 下面是 a.c 的内容: 1.a.c 文件代码 1 char a = 'A'; // global variable 2 void msg() 3 { 4 printf("Hello\…
C语言中static修饰符的意义
在C语言中,static通常有2种含义:1)定义变量的生命周期:2)定义变量或者函数的作用域. 变量的生命周期是指,相对于程序运行的进程生命周期,变量存在的时间段.变量的生命周期由变量的存储类型(位置)决定.因此static的第1种含义也可以理解为,static定义了变量的存储类型(位置). C语言中,变量存储位置分为栈.全局静态区.堆.栈用来做函数调用,参数传递等,在程序的运行过程中是操作最频繁的数据区.全局静态区,是变量一直存在于内存中,在程序整个运行过程中不会被销毁.堆,是由操作系统维护的…
c语言中static的用法,包括全局变量和局部变量用static修饰
一.c程序存储空间布局 C程序一直由下列部分组成: 1)正文段--CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段)--在程序中所有赋了初值的全局变量,存放在这里. 3)非初始化数据段(bss段)--在程序中没有初始化的全局变量:内核将此段初始化为0. 4)栈--增长方向:自顶向下增长:自动变量以及每次函数调用时所需要保存的信息(返回地址:环境信息). 5)堆--动态存储分.是向高地址扩展的数据类型,是自下向上的扩展方…
C语言中Static和Const关键字的的作用
程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中. 1.作用于变量: 用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块内部有效(作用域),其缺省的存储方式是自动变量或说是动态存储的,即指令执行到变量定义处时才给变量分配存储单元,跳出代码块时释放内存单元(生命期).用static声明局部变量时,则改变变量的存储方式(生命期),使变量成为静态的局部变量,即编译时就为变量分配内存,直到程序退出才释放存储单元.这样,使得该…
c语言中static 用法总结(转)
惨痛教训: 假设在test.h中定义了一个static bool g_test=false; 若test1.c和test2.c都包含test.h,则test1.c和test2.c分别生成两份g_test,在test1.c 中置g_test=true,而test2.c中仍然为false并未改变!shit!! 一.c程序存储空间布局 C程序一直由下列部分组成: 1)正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 2)初始化数据段(数据段…
C语言中Static和Const关键字的的作用 -- 转
static作用:“改变生命周期” 或者 “改变作用域” 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中. 1.作用于变量: 用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块内部有效(作用域),其缺省的存储方式是自动变量或说是动态存储的,即指令执行到变量定义处时才给变量分配存储单元,跳出代码块时释放内存单元(生命期).用static声明局部变量时,则改变变量的存储方式(生命期),使变量成为静态的局部变量,即编译时…
C语言中static的使用
在开发过程中.我们常常会须要定义一些static类型的变量或者函数.我们接下来来详细聊一下static: 1.修饰变量 当static来修饰一个变量时,就注定了这个变量的可见范围和生命周期: (1)当修饰全局变量时 static int flag1 = 0; int flag2 = 0; 这两个变量存储在全局数据区.flag1仅仅在本文件可见.其它文件里不可见:flag2可在其它文件里通过声明extern int flag2来使用: (2)当修饰局部变量时 void fun(void){ sta…
c语言中static关键字用法详解
个人总结: 1.C不是面向对象的,在c中static修饰的变量或函数仅在当前文件中使用 2.C可以对局部变量使用static修饰(注意面向对象的java则不行),其放在全局区一直存在 概述static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护. 但是对于c语言初学者,static由于使用灵活,并不容易掌握.本文就static在c语言中的应用进行总结,供参考使用.错漏之处,请不吝指正. 在程序中使用static变量1. 局部变量普通局部变量是再熟悉不过的变量了…
c语言中static的语义
1.static变量: 1).局部 a.静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用.退出该函数后, 尽管该变量还继续存在,但不能使用它. b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值.而对自动变量不赋初值,则其值是不定的. 2).全局 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式.但是他们的作用域,非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用): 而静态全局变量则限制了其作用域,…
C语言中static的作用
(1)在函数体内,局部的static变量.生存周期为程序的整个生命周期:作用域却在定义了的函数体内.一个被声明为静态的变量在这个函数被调用过程中维持其值不变.因为它分配在静态存储区域,函数调用结束以后并不释放单元,但是在其他的作用域无法访问.当再次调用这个函数时,这个局部变量还存活,而且用在它的访问空间,因此访问的是上次调用后的值. (2)在文件模块内但在函数体外,一个声明为静态的全局变量可以被模块内的所有函数访问,但不能被模块外其他函数访问,它是一个本地的全局变量,限制静态全局变量的作用域.…
c语言中static的用法
1.static定义变量: 1).局部: a.静态局部变量在函数内部定义,生存期为整个源代码,但作用域与自动变量相同,只能在定义的函数里面使用.退出该函数后,虽然此变量还存在内存中,但不能使用. b.对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予为0.而对于自动变量不赋值,其值是不确定的.(其值就是“上次”用过此内存残留的值) 2).全局: 全局变量本身就是以静态存储的.对于全局变量和全局静态变量的区别: 全局静态变量只能在声明的这个文件内有效,在其他源文件中无效. 全局变量在其他…
关于C语言中static保留字的使用
static存储类型可以用于全部变量,无需考虑变量声明的位置.但是作用于块外部和块内部时具有不同的作用. (1)当作用于函数内部时,和每次程序离开所在块就会丢失值的自动变量不同,static变量会保存下去,块内的static变量只会在程序执行前进行一次初始化,而自动变量则会每次都初始化.接下来对此特性进行验证. #include "stdio.h" void test(void) { ; ; printf("a = %d,b = %d\n&q…
对c语言中static函数的理解
先看看前两篇博客:个人对头文件的理解.对声明和定义的理解. static 函数只在定义该static函数的cpp中可见,在其他cpp中是不可见的. 举个例子,我建立了一个project,该project中有三个文件,一个头文件,和两个cpp文件.文件内容如下: 在build该project时会出错,错误提示是fun()函数声明了却未定义. 为什么编译器没有找到fun()函数的定义呢?我明明在Source.cpp中定义了fun()函数呀. 原因很简单:static函数的作用域很小,只在本cpp中有…
static类成员(变量和函数)
0. 使用背景 对于特定类类型的全体对象而言,访问一个全局对象有时是必要的.也许,在程序的任意点需要统计已创建的特定类类型对象的数量:或者,全局对象可能是指向类的错误处理例程的一个指针:或者,它是指向类类型对象的内在自由存储区的一个指针.然而,全局对象会破坏封装:对象需要支持特定类抽象的实现.如果对象是全局的,一般的用户代码就可以修改这个值. 1. static 类成员 类可以定义类 静态成员,而不是定义一个可普遍访问的全局对象.通常,非 static 数据成员存在于类类型的每个对象中.不像普通…
寄存器变量 extern 外部变量 外部函数
寄存器变量 这个可以不理睬 register 关键字定义的变量直接放在寄存器当中 寄存器是放在CPU内部的存储单元,它的速度比内存快的多,所以当程序中有10000多次调用同一个变量的时候声明成寄存器变量会提高程序的执行速度. 科技发展不用这样写 register int i,f=1; 外部变量 使用关键字extern 看结果? #include <iostream> using namespace std; int fun(int x,int y); int main(){ extern in…
python以下划线开头的变量和函数的作用
在python中,我们经常能看到很多变量名以_下划线开头,而且下划线的数量还不一样,那么这些变量的作用到底是什么? 变量名分类: # 以数字.字母开头: 正常的公有变量名a = 1def aa(): pass# 以单下划线开头: 半私有的变量名_b = 2def _bb(): pass# 以双下划线开头: 私有变量名__c = 3def __cc(): pass# 以双下划线开头,双下划线结尾: 内置属性名或者魔法方法名 __name__, __dir__ 公有变量名: 以此类名称命名的对象,为…