TheScope, Visibility and Lifetime of Variables
C language-- TheScope, Visibility and Lifetime of Variables
全局变量
普通全局变量
//file1
#include<stdio.h>
int a =3;
int main(){
//code block
}
作用范围是整个程序,它们的生命周期贯穿整个程序,从程序开始运行到程序结束,如果在另一个文件中使用外部变量,需要用 extern
关键字声明。(例如:如上定义了一个file1的全局变量,我们可以用file2访问)
//file2
#include<stdio.h>
extern int a;
int main(){
//code block
}
static 修饰
#include<stdio.h>
static int m=5;
int main(){
//代码区
}
当 static
用于全局变量时,其主要作用是限制变量的作用范围,使该变量仅对定义它的文件可见(即限制在文件内作用,其他文件extern访问也打咩)。这种机制有助于实现数据封装,避免变量被其他文件的代码意外修改。
局部变量
它们的作用范围仅限于定义它们的函数或代码块。局部变量在函数调用时被创建,函数返回时被销毁。
普通局部变量
#include <stdio.h>
void func() {
int a = 10; // 自动变量
printf("a = %d\n", a); // 输出 10
} // 离开这个函数后,变量 a 就被销毁了
int main() {
func(); // 调用函数
// 这里不能访问 a,因为 a 是局部变量
return 0;
}
a
是 func
函数中的一个局部变量。当 func
函数执行时,a
被创建并分配内存,函数执行结束后,a
被销毁。
static 修饰
#include <stdio.h>
void func() {
static int count = 0; // 静态变量
count++;
printf("count = %d\n", count);
}
int main() {
func(); // 调用一次,输出 count = 1
func(); // 调用第二次,输出 count = 2
func(); // 调用第三次,输出 count = 3
return 0;
}
在这个例子中,count
是一个静态变量,它只会初始化一次,并在程序运行期间保持其值,即使函数退出,count
的值也不会丢失。
TheScope, Visibility and Lifetime of Variables的更多相关文章
- JavaScript- The Good Parts Chapter 4
Why, every fault’s condemn’d ere it be done:Mine were the very cipher of a function. . .—William Sha ...
- The Go Programming Language. Notes.
Contents Tutorial Hello, World Command-Line Arguments Finding Duplicate Lines A Web Server Loose End ...
- RAD Studio 10.3 Rio (BCB & Dephi) 发布啦
期盼已久的RAD Studio 10.3 Rio 终于发布了: 下载链接:http://altd.embarcadero.com/download/radstudio/10.3/delphicbui ...
- Implementation with Java
Implementation with Java From:http://jcsc.sourceforge.net In general, follow the Sun coding conventi ...
- Go Programming Language
[Go Programming Language] 1.go run %filename 可以直接编译并运行一个文件,期间不会产生临时文件.例如 main.go. go run main.go 2.P ...
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(三)之Everything Is an Object
---恢复内容开始--- Both C++ and Java are hybird languages. A hybird language allow multiple programming st ...
- zz剖析为什么在多核多线程程序中要慎用volatile关键字?
[摘要]编译器保证volatile自己的读写有序,但由于optimization和多线程可以和非volatile读写interleave,也就是不原子,也就是没有用.C++11 supposed会支持 ...
- Java Concurrency (1)
Memory that can be shared betweenthreads is called shared memory or heap memory. The term variable a ...
- about variables
局部变量(Local Variable),全局变量(global variable),变量共享; 静态局部变量(static local variables),函数运行结束变量值不会消失,并且其它函数 ...
- (转) Name visibility
Scopes Named entities, such as variables, functions, and compound types need to be declared before b ...
随机推荐
- Web渗透04_密码破解
账号密码是任何一个系统都必备的要素. 弱密码 123456 654321 112233 admin 等等 默认密码 Tomcat控制台: tomcat/tomcat 明文传输 http的明文传输,可以 ...
- Robust Loop Closure by Textual Cues in Challenging Environments
arxiv | 南洋理工大学开源 基于文本线索实现复杂环境中的鲁棒闭环检测 [Robust Loop Closure by Textual Cues in Challenging Environmen ...
- C语言(从入门到入土)
1.C语言整体上需要记住的 总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构 (三个循环结构), 选择结构 (if 和 switch) 2)读程序都要从main()入口, 然后从最上面 ...
- Lncpc2024 游记
Day 0 7:30 起的比较早,和同学xjt约好了一起写作业,起来之后感觉身上有点冷,之前考CSP的时候就有点感冒,所以决定洗个热水澡,出来就写作业了. 9:30 学习状态还可以,比较沉浸式,这个时 ...
- C# 请求 form-data格式的 接口 POSTMAN form-data
HttpClient _httpClient = new HttpClient(); var postContent = new MultipartFormDataContent(); string ...
- CSP-S2024 游记
CSP-S2024 游记 Day 0 晚上放假回家了,宵夜整了点麦当当,就去睡了. Day 1 本来想多睡会,结果到 \(7:10\) 惊醒了,发现为防止早读迟到已经进化出自动起床功能了. 准备睡回笼 ...
- P8392 BalticOI 2022 Day1 Uplifting Excursion
P8392 BalticOI 2022 Day1 Uplifting Excursion 贪心加动规,好题,这两个甚至完全相反的东西可以融进一道题-- 思路 物品较少,贡献较小,体积较小,但总体积巨大 ...
- 2023NOIP A层联测9 风信子+P2048 【NOI2010】 超级钢琴 2023
P2048 [NOI2010] 超级钢琴 2023NOIP A层联测9 风信子 一年 OI 一场空,一道原题见祖宗-- Ps:超级钢琴是风信子的前置题. 超级钢琴 题意 在一段序列上,选择长度为 \( ...
- 不错的PHP扩展
不错的PHP扩展 ext name ext description ds data structure 提供list hash queue等数据结构 igbinary 数据压缩(速度快 压缩后内容小) ...
- 23、表空间及段区块_1(段区块管理、pctfree、数据块结构、行迁移、高水位)
oracle数据库的物理存储结构 1.spfile:参数文件 2.controlfile:控制文件 3.datafile:数据文件 4.redo log 5.arch:归档日志 oracle数据库的d ...