企联网站建设,seo搜索排名优化方法,关键词优化,现在网站做多宽目录 概述1. 局部变量1.1 普通局部变量1.2 静态局部变量 2.全局变量2.1 普通全局变量2.2 静态全局变量 3.函数4.静态块总结 概述
本文简单介绍一下static关键字在c语言中的应用。
1. 局部变量
1.1 普通局部变量
普通局部变量是在函数内部或代码块内部定义的变量。这些变量只… 目录 概述1. 局部变量1.1 普通局部变量1.2 静态局部变量 2.全局变量2.1 普通全局变量2.2 静态全局变量 3.函数4.静态块总结 概述
本文简单介绍一下static关键字在c语言中的应用。
1. 局部变量
1.1 普通局部变量
普通局部变量是在函数内部或代码块内部定义的变量。这些变量只能在其所在的作用域内访问并且在离开作用域后会被自动销毁。
普通局部变量有以下特点 只能在其所在的作用域内访问普通局部变量的作用域通常是由它们所在的大括号 {} 决定。一旦超出了其定义所在的作用域变量将不再可见。生命周期受作用域限制普通局部变量的生命周期从其定义的位置开始直到离开其作用域时结束。当执行到变量所在的作用域外部时变量将被自动销毁释放相应的内存空间。没有默认值普通局部变量在定义时没有默认值其初始值是未定义的。所以在使用之前应该先为其赋值否则会导致未定义行为。存储在栈上普通局部变量通常存储在栈中。栈是一种用于存储局部变量和函数调用信息的内存区域。栈上的变量分配和释放都是自动进行的。可以是任何基本数据类型普通局部变量可以是任何基本数据类型如整型、浮点型、字符型等也可以是结构体、联合体等复合数据类型。 1.2 静态局部变量
静态局部变量使用关键字static进行修饰是在函数内部或代码块内部定义的具有静态存储期的变量。
与普通局部变量相比静态局部变量具有以下特点 存储在静态存储区静态局部变量的存储位置位于静态存储区不同于栈上的普通局部变量。静态存储区是程序运行时分配给静态变量和全局变量的内存区域。生命周期持久静态局部变量在程序执行期间都存在其生命周期持久。当离开函数或代码块时静态局部变量的值将保持不变下次进入该函数或代码块时仍然可以访问到之前保存的值。初始值为0静态局部变量在定义时如果没有显式赋初值会被自动初始化为0对于数字类型或NULL指针对于指针类型。仅在定义所在的作用域内可见静态局部变量只能在其所在的作用域内访问无法被其他函数或代码块所访问。这种封闭性可以防止变量的命名冲突同时提供了一定的信息隐藏。保持上次赋值结果每次进入定义所在的作用域时静态局部变量不会被重新初始化保持上次赋值的结果。这使得静态局部变量可以用于记录函数调用间的状态信息。 2.全局变量
2.1 普通全局变量
全局变量是在函数外部定义的变量可以在程序的任何地方访问。
全局变量有以下特点 全局作用域全局变量的作用域范围覆盖整个程序即从变量定义的地方开始到文件结束都可以访问该变量。静态存储区全局变量在程序执行期间一直存在具有静态存储期。它们在程序启动时被分配内存在程序结束时才释放。默认初始化全局变量如果没有被显式地初始化将会自动初始化为零值对于数字类型或空指针对于指针类型。可以被多个函数共享全局变量可以在程序中的多个函数之间共享数据。这使得全局变量成为在不同函数之间传递信息的一种方式。命名冲突可能性由于全局变量的作用域范围广泛存在命名冲突的潜在问题。当多个文件中使用相同名称的全局变量时容易引发命名冲突和混淆。与局部变量可以同名全局变量和局部变量可以同名但在同一作用域中局部变量会覆盖全局变量优先使用局部变量。 2.2 静态全局变量
静态全局变量使用关键字static进行修饰是在函数外部、文件的顶层定义的变量。
与普通全局变量相比静态全局变量具有以下特点 文件作用域静态全局变量的作用域仅限于当前源文件即从变量定义的地方开始到文件结束其他文件无法访问该变量。静态存储区静态全局变量在程序执行期间一直存在具有静态存储期。它们在程序启动时被分配内存在程序结束时才释放。与普通全局变量相比静态全局变量的生命周期限制在当前文件内。默认初始化静态全局变量如果没有被显式地初始化将会自动初始化为零值对于数字类型或空指针对于指针类型。仅在当前文件内可见静态全局变量只能在当前源文件内访问其他源文件无法直接访问。这种封闭性提供了一定的信息隐藏和命名空间隔离。避免命名冲突由于静态全局变量的作用域限制在当前文件内可以避免与其他文件中同名的全局变量造成的命名冲突。 3.函数
函数的使用方式与全局变量类似在函数的返回类型前加上static关键字就是静态函数。其特性如下
静态函数只能在声明它的文件中可见其他文件不能引用该函数不同的文件可以使用相同名字的静态函数互不影响 普通函数可以在另一个文件中直接引用甚至不必使用extern声明 4.静态块
静态块Static Blocks 在C99标准中引入了静态块的概念用于限制变量的作用域。静态块中声明的变量仅在该块内可见不同于普通块局部块中的自动变量。 总结
使用static关键字可以改变变量、函数和块的作用域和可见性。静态变量可以使变量在函数执行结束后仍然存在静态函数使得函数对其他源文件隐藏静态全局变量只能在声明它的源文件内访问而静态块可以局部限定变量的作用范围。
在程序设计中合理使用static关键字可以提高代码的安全性、模块化程度和可维护性。