首页
学习
活动
专区
圈层
工具
发布

c语言局部变量、全局变量、静态变量、内部函数、外部函数、声明、定义、extern作用总结

一、先搞一波概念 变量按作用域分: 1.局部变量: (1)在函数的开头定义(如定义形参)。   (2)在函数内部定义(如在函数里面定义的变量)。   ...c语言中分为四种类别:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern),自动变量存放在动态存储区,静态变量和外部变量存放在静态存储区中,寄存器变量存放在CPU...(auto),如形参等,在程序中推荐使用,也是使用最多的一个变量 (2)静态局部变量(格式:static):   使用关键字static来定义,在函数调用完不释放空间,在下次调用时,还保留上一次的值。...,可以循环调用一个函数实现累乘,把结果存放在一个静态局部变量中(这个变量可以在被调函数中,这可以放在主调函数中,当然还可以把它换成全局变量,效果都一样)。...(3)在外部变量前面加static修饰符,可将外部变量限制在本文件中。这里有一个坑,如果变量为static全局变量,在函数内不能扩张其作用域,必须在函数外声明以达扩张效果(包括主函数)。

14.2K84
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++中的静态变量和静态函数的作用

    C++中的静态变量和静态函数是一种特殊类型的成员,具有不同于普通成员的特殊性质。静态变量和静态函数都是与类相关的,而不是与类的实例相关的。...在本文中,我们将介绍C++中的静态变量和静态函数的作用以及使用案例。 静态变量 在C++中,静态变量是在类的定义中声明的变量,它们不属于任何特定的类实例,而是属于整个类。...在main函数中,我们创建了三个Counter实例,然后调用Counter::getCount()函数,该函数返回了创建的Counter实例的总数。...静态函数 在C++中,静态函数是与类相关联的函数,它们不依赖于类的任何实例。静态函数可以像全局函数一样访问静态变量和其他静态函数,并且它们不能访问非静态变量和非静态函数。...getInstance()函数使用一个名为instance的静态变量来存储Singleton实例,并将其初始化为一个新的

    28910

    PHP中的static静态变量的使用方法详解

    php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。 的计数函数,要将变量 w3sky 定义为静态(static)的: 如下: 本函数每调用Test()都会输出 $w3sky 的值并加一。 静态变量也提供了一种处理递归函数的方法。递归函数是一种自己调用自己的方法。...写递归函数时要小心,因为可能会无穷递归下去,没有出口.务必确保 有方法来中止递归。以下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止: 静态变量与递归函数的例子: 注: 静态变量可以按照上面的例子声明。如果在声明中用表达式的结果对其赋值会导致解析错误。 声明静态变量例子: <?

    4.3K20

    【JS面试题】如何通过闭包漏洞在外部修改函数中的变量

    换而言之, 闭包让开发者可以从内部函数访问外部函数的作用域。 在 JavaScript 中,闭包会随着函数的创建而被同时创建 确实不是很好理解,那么我来通俗讲一下。...闭包其实就是指在函数内部定义一个函数, 内部定义的函数可以访问外部函数作用域中的变量, 这样就形成了一个封闭的作用域,被称作闭包。 即使外部函数已经执行完毕,闭包仍然可以访问这些变量。...这样我们就可以在函数外部 使用一个函数内的变量。 闭包还可以用来创建“私有”变量和方法,提高代码的封装性和安全性。 闭包 最根本的作用就是实现函数内变量的一个长期存储,让它不会被销毁。...innerFunc(); 1 innerFunc(); 2 const innerFunc2 = outerFunction(); innerFunc2(); 1 innerFunc2(); 2 `` 如何在函数外部修改闭包中变量...,修改obj对象中的值。

    1.6K20

    【C 语言】指针间接赋值 ( 直接修改 和 间接修改 指针变量 的值 | 在函数中 间接修改 指针变量 的值 | 在函数中 间接修改 外部变量 的原理 )

    文章目录 一、直接修改 和 间接修改 指针变量 的值 二、在函数中 间接修改 指针变量 的值 三、在函数中 间接修改 外部变量 的原理 一、直接修改 和 间接修改 指针变量 的值 ---- 直接修改 指针变量...间接修改 指针变量 的值 ---- 在 函数 中 间接修改 指针变量 的值 , 将 指向一级指针 的 二级指针 变量 , 传递到 函数形参 中 , 在 函数中 , 使用 * 符号 , 修改 二级指针...一级指针 变量 , 这个传入的 一级指针 变量 , 其 生命周期 到函数结尾就结束了 , 跟函 数外部的 一级指针 变量 没有任何关系 ; 如果 要修改 函数外部 的变量 , 必须传入 指向该变量的...三、在函数中 间接修改 外部变量 的原理 ---- 如果要 修改 一级指针 的值 , 必须 传入 指向 一级指针 的 二级指针 变量 才可以 , 传入一级指针变量 , 不能修改一级指针变量值 ; 这是因为...如果传入 一级指针 变量 , 这个传入的 一级指针 变量 , 其 生命周期 到函数结尾就结束了 , 跟函 数外部的 一级指针 变量 没有任何关系 ; 如果 要修改 函数外部 的变量 , 必须传入 指向该变量的

    25.9K11

    Web前端面试敲重点知识,14个TypeScript核心基础面试题和答案

    6、TypeScript 中声明变量有哪些不同的关键字? 7、如何书写带有类型注释的函数 ? 8、如何在 TypeScript 中创建对象 ? 9、如何在 TypeScript 中指定可选属性 ?...void 表示变量没有类型,它充当与任何相反的类型,它在不返回值的函数中特别有用 如果变量是 void 类型,则只能将 null 或 undefined 值分配给该变量。...image.png 6、TypeScript 中声明变量有哪些不同的关键字? image.png 7、如何书写带有类型注释的函数 ?...函数是执行特定代码的代码块 函数可以有选择地接受一个或多个参数,处理它们,并有选择地返回一个值。 image.png 8、如何在 TypeScript 中创建对象 ?...这些语言需要静态类,因为所有代码,即数据和函数,都需要在一个类中并且不能独立存在。静态类提供了一种方法来允许这些功能,而无需将它们与任何对象相关联。

    14.8K10

    【C++】泛型编程 ⑨ ( 类模板的运算符重载 - 函数声明 和 函数实现 写在同一个类中 | 类模板 的 外部友元函数问题 )

    类模板 的 函数声明 与 函数实现 都写在同一个类中 ; 类模板 的 函数实现 在 类外部进行 , 写在相同的 .h 和 .cpp 源码文件中 ; 类模板 的 函数实现 在 类外部进行 , 写在不同的....h 和 .cpp 源码文件中 ; 2、代码示例 - 函数声明与函数实现分离 对于下面的 Father 类中的 printValue 函数 , // 声明 类模板 父类 template 函数 使用 , 就变得很复杂 , 下面针对该问题进行讨论 ; 二、普通类的运算符重载 - 函数声明 和 函数实现 写在同一个类中 下面的类是一个 普通类 , 其中定义了 成员变量 和 成员方法...三、类模板的运算符重载 - 函数声明 和 函数实现 写在同一个类中 1、类模板 的 外部友元函数问题 将上述 " 普通类的运算符重载 - 函数声明 和 函数实现 写在同一个类中 " 示例改造成 类模板...示例 ; 问题就出现在 定义在外部的 友元函数 中 , 友元函数 , 不能 读取 和 访问 到 泛型类型 T , 也就是 类模板 中 的 template 泛型类型 T ; 在外部重新定义

    1.8K10

    【精选】面试官:聊下常见设计模式有哪些?

    1.常见设计模式 单例模式解决的是如何在整个项目中创建唯一对象实例的问题,避免重复创建(实例化) 对象,已经有现成的实例就用现成的。...实现单例模式的要点: 三私一公:私有化静态属性,私有化构造方法,私有化克隆方法,公有化静态方法。 php //(1)....需要一个保存类的唯一实例的静态成员变量: private static $instance; //私有化静态属性 //(2)....构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例模式 的意义: private function __construct() //私有化构造方法 { $this->_db =...必须提供一个访问这个实例的公共的静态方法(通常为getInstance方法),从 而返回唯一实例的一个引用 public static function getInstance() { if (

    1.5K20

    php init()和__construct() 区别

    区别 __construct() __construct(): 是PHP内置的构造函数,实例化之前 PHP 解析引擎自动调用,做一些初始化的工作或者外部服务器检测的工作。...在实例化对象之前需要做的工作都写在这里 init() : init()方法一般都是自己定义的,可以随便写名字,一般会在__construct() 中写 调用。...'test' => int(1) } class Test#1 (0) { } 单例模式 class Singleton { /** * Description:(1)静态变量...*/ public function GetDbConnect() { return $this->db; } } 需要一个保存类的唯一实例的静态成员变量...(通常$instance为私有变量) 构造函数和克隆函数必须声明为私有的,为了防止外部程序new类从而失去单例模式意义 必须提供一个访问这个实例的公共静态方法,从而返回唯一实例的一个引用

    4.7K10

    设计模式第一讲(单例模式)

    单例模式的三个要素 1.保存类唯一实例的静态变量. 2.构造函数和克隆函数必须是私有的,防止外部去实例化,这样就不存在单例模式的意义. 3.提供一个可供外部访问的公共静态方法,这个方法返回该类的唯一实例...单例模式的优点 在PHP中的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 在使用面向对象的方式开发时, 如果使用单例模式, 则可以避免大量的 new 操作消耗的资源。...,#2就是对象的序号.这就表明两个对象是不同的对象,同时对这两个对象做比较,===是全等于,要求数据类型,值相等.由于这两个变量只是类型相等(都是对象),但是值不想等,也就是说在内容中不属于同一片空间....使用单例模式 class Single2 { // 1.声明一个静态属性,用户保存类的实例 public static $instance; //3....将构函数私有化,避免外部new(每new一次,就不是同一个实例) private function __construct() { } // 2.声明一个静态的公共方法,用户外部调用本类的实例

    64130

    PHP声明变量

    2.4.1  创建变量 PHP中的变量是用美元符号($)作为前缀的标示符,标识符是一个标识不同对象的符号,如变量的名称,函数的名称,或者其他用户自定义对象的名称。...,那些部分不可以访问该变量,在PHP中,变量的作用域范围可以分为四类:局部变量、函数参数、全局变量和静态变量,本节主要介绍变量的这几种作用域范围。...1.局部变量 在一个函数中声明一个变量是那个函数的局部变量,也就是说该变量只能被函数内部成员访问,函数外部成员是不能访问该变量,并且不可见。...2.函数参数 在PHP中,函数可以接受相应的参数,虽然这些参数是接受函数外部的值,但退出函数后就无法访问这些参数,在函数执行结束后,参数的值就会消失,和函数的执行有很大的关系。...3.全局变量 全局变量可以在整个PHP程序中,任何地方访问,但是如果要修改一个全局变量,必须在修改该变量的函数中显式的声明为全局变量,在函数中显示声明全局变量很简单,只需在函数中使用global关键字声明就可以

    6.2K110

    PHP单例模式与工厂模式详解

    一、单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的。...所有的单例模式至少拥有以下三种公共元素: 它们必须拥有一个构造函数,并且必须被标记为private 它们拥有一个保存类的实例的静态成员变量 它们拥有一个访问这个实例的公共的静态方法 单例类不能再其它类中直接实例化...php class Single { private $name;//声明一个私有的实例变量 private function __construct(){//声明私有构造方法为了防止外部代码使用new...} static public $instance;//声明一个静态变量(保存在类中唯一的一个实例) static public function getinstance(){//声明一个getinstance...php //工厂类(关于运算符的操作) class factory{ public static function dx($ope){ switch($ope){ case "+": return new

    97720

    谈谈你是怎么理解面向对象的?

    6、魔术方法: PHP中,给我们提供一系列用__开头的函数,这些函数无需自己手动调用, 会在合适的时机自动调用,这类函数称为魔术称为魔术函数。...在其他文件中使用这个类时,可以使用include导入这个".class.php"文件。 封装  1、什么是封装? 通过访问修饰符,将类中不需要外部访问的属性和方法进行私有化处理,以实现访问控制。...覆盖之后,子类调用方法,将调用子类自己的方法。 同样,除了方法覆盖,子类也可以具有与父类同名的属性,进行属性覆盖。  如果,子类重写了父类方法,如何在子类中调用父类同名方法?...(这种操作常见于强类型语言,在PHP中,只能实现数组和对象的类型约束) 2、如果类型约束为某一个类,则本类以及本类的子类对象,都可以通过。 3、在PHP中,类型约束,只能发生在函数的形参中。...返回一个数组,数组中的值就是可以序列化的属性; 11、__wakeup():对象反序列化时,自动调用。为反序列化新产生的对象,进行初始化赋值; 12、__autoload():需要在类外部声明函数。

    1.3K10

    PHP-作用域

    1.2 作用域 1.2.1 变量作用域 1、全局变量:在函数外面 2、局部变量:在函数里面,默认情况下,函数内部是不会去访问函数外部的变量 3、超全局变量:可以在函数内部和函数外部访问 ? php $num=10; function fun() { echo $num; //Notice: Undefined variable: num } fun(); //函数内部默认不能访问函数外部的值...; } fun(); //11 fun(); //12 常量和静态变量的区别 1、常量和静态变量都是初始化一次 2、常量不能改变值,静态变量可以改变值 3、常量没有作用域,静态变量有作用域 静态变量是有作用域的 } fun1(); fun2(); 1.2.3 匿名函数use() 默认情况下,函数内部不能访问函数外部的变量,但在匿名函数中,可以通过use将外部变量引入匿名函数中...php $num=10; $fun=function() use($num) { //将$num引入到匿名函数中 echo $num; }; $fun(); //10 思考:如何在函数内部访问函数外部变量

    1.1K40

    PHP面向对象的设计模式-单例模式(一)

    类的构造函数被设置为私有的,从而防止了类被外部直接实例化。通过一个公共的静态方法来获取该类的唯一实例。二、单例模式的实现方法在 PHP 中,我们可以通过以下两种方式来实现单例模式。...基于静态变量的实现方法在这种实现方法中,我们将该类的唯一实例保存在一个静态变量中,并且将类的构造函数设置为私有的。通过一个公共的静态方法来获取该类的唯一实例。...该类的唯一实例被保存在一个名为 $instance 的私有静态变量中。类的构造函数被设置为私有的,这样就不能从外部直接实例化该类。...基于命名空间的实现方法在这种实现方法中,我们将该类的唯一实例保存在一个命名空间中,并且将类的构造函数设置为私有的。通过一个公共的静态方法来获取该类的唯一实例。...该类的唯一实例被保存在一个名为 $instance 的私有静态变量中。类的构造函数被设置为私有的,这样就不能从外部直接实例化该类。

    81820

    PHP面向对象基础总结

    4.在类的非静态方法里面可以使用伪变量$this,这个伪变量是调用该方法的实例化对象引用 5.常量的值必须是一个定值,不允许修改,且不能是变量,类属性或其它操作(如函数调用)的结果。 静态成员、方法和常量 当在类的外部访问这些静态成员、方法和常量时,必须使用类的名字。...这 种机制也作用于 构造函数和析构函数、重载 及 魔术 函数。 11.静态变量和方法 声明类成员或方法为static,就可以不实例化类而直接访问。...不能通过一个对象来访问其中的静态成员(静态方法 除外)。 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。 静态属性不可以由对象通过->操作符来访问。...> 17.PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为final,则子类无法覆盖该方法; 如果一个类被 声明为final,则不能被继承。

    2K30

    PHP.步步为营 | 类与面向对象 知识详析 与 运用实例

    属性声明是由关键字 public,protected或者private开头,后面跟一个普通的变量声明来组成。 属性的变量可以设置初始化的默认值,默认值必须是常量。...public function getPrice() { return $this->price; //内部访问私有属性 ​ } } demo(类似第2节第一个例子): 注意, 类中声明类属性变量的时候...self用于本类中(静态 / 非静态)方法 对本类中静态属性的调用; parent用于子类中方法 对 父类中静态属性的调用; 这里题外话说一下。。。...然而,有时候我们希望某个局部变量不要被删除, 这时候也即可以使用static对变量 / 属性进行声明; 每次调用相关函数结束后, 该变量将会保留着前一次被函数调用时的值, 而不会马上被销毁;...: 静态方法中,$this伪变量不允许使用。

    1.4K50

    一篇文章带你了解JavaScript中的函数表达式,递归,闭包,变量,this对象,模块作用域

    例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。 在本质上,闭包是将函数内部和函数外部连接起来的桥梁。...当函数内部的定时器引用了外部函数的变量对象时,该变量对象不会被销毁。...在函数中访问一个变量时,会从作用域链搜索具有相同的名字的变量,一般地,当函数执行完成后,局部活动对象就会被销毁,内存中保存全局作用域。 一个内部函数会将它的外部函数的活动对象添加到它的作用域链中。...function(){ return this.name; }; } }; alert(object.getNameFunc()()); //"The Window"(在非严格模式下) 任何在函数中定义的变量...,都可以认为是私有变量,因不能在函数的外部访问这些变量。

    1.2K00
    领券