C语言深度剖析1.0

简介: 局部变量:在代码块中的变量,有临时性。进入代码块,自动形成局部变量,突出代码块自动释放(生命周期)只在本代码块中有效。

运行:文本代码-->可执行程序(二进制文件).exe->双击启动该程序


ba6eec56b92748df9389773b2b0356e9.jpg


win中鼠标双击程序-->将程序加载到内存中(任何程序咋运行之前都必须加载到内存当中【速度快】)


程序未加载之前 都在硬盘中


所有的变量本质是在 内存 的某个位置开辟空间,用来保存数据。


为什么需要变量?


因为有数据需要暂时被保存起来,等待后续的处理。任何时刻不是所有数据都要立马被计算的。


定义与声明


定义:开辟空间,(只能定义一次)


声明:告知 已经定义(可声明多次)


auto


生命周期vs作用域(开辟到释放)


声明周期 是作用时间长短


作用域 是作用范围大小有效区域


局部与全局变量


代码块:用{}括起来的区域


局部变量:在代码块中的变量,有临时性。进入代码块,自动形成局部变量,突出代码块自动释放(生命周期)只在本代码块中有效。


一般在代码块中定义的变量,即局部变量,默认都是auto修饰的,不过一般省略


局部变量,自动变量,临时变量,都是一回事。我们统称局部变量


全局变量:在所有函数外定义的变量,具有全局性。


(若局部全局变量命名冲突则 局部优先)


如 以下for循环代码,是打印不出来i的值的,因为出了循环体i的生命周期就结束了


#include <stdio.h>
#include <windows.h>
int main()
{
for (int i = 0; i < 10; i++){
}
printf("i=%d\n", i);
system("pause");
return 0;
}


以下if语句中的j就可以打印出来        (定义局部变量前可用outo来修饰,但一般省略)


#include <stdio.h>
int main()
{
if(1)
{
auto int j = 0; //自动变量
printf("before: j=%d\n", j);
j += 1;
printf("after : j=%d\n", j);
}


auto只能修饰局部变量,不能修饰全局变量。(基本不用了但是要了解)

register

建议性的,将所修饰变量,放入CPU寄存区中,从而达到提高效率的目的

存储分级


cf7f67452a1f4cff93d9158d8642c659.png


离CPU越近的储存单元,效率高成本高,反之效率低成本低。


下游(如硬盘)加载到 上游(如内存)——>缓存技术


任何一种硬件充当上游硬件的缓存


CUP访问数据的时候,以最小的成本,达到最高的效率


常用的数据放在容量小但访问速度快的硬件里如CPU,把不常用的数据放在容量大的硬盘里,以降低成本


那么什么样的变量,可以采用register呢?


1. 局部的 (全局会导致CPU寄存器被长时间占用)


2. 不会被写入的(不会被修改的)(写入就需要写回内存,后续还要读取检测的话失去存在意义)


(但是如果想修改被修饰变量的话也可以修改,但是不建议修改)


(写入叫上游硬件(如CPU)返回下游硬件(如内存)会改变原来的值)


3. 高频被读取的(被用得多)(提高效率所在)


4. 如果要使用,请不要大量使用,因为寄存器数量有限


注意:被register修饰的变量是没有地址的,取不了地址 (地址对应内存)


下期再见!勿忘三连!

相关文章
|
安全 C语言
C语言深度剖析2.0
static修饰局部变量 :更改局部变量的生命周期(临时变量->全局生命周期 )但是作用域不变还是只在本代码块内有效
69 0
C语言深度剖析2.0
|
10月前
|
存储 算法 搜索推荐
C语言探秘
C语言探秘
|
10月前
|
存储 算法 C语言
“C语言与人生:手把手教你玩转C语言数组,从此编程无难题“
“C语言与人生:手把手教你玩转C语言数组,从此编程无难题“
|
3月前
|
存储 NoSQL 算法
【C语言】《C语言基础指南!》- 史上最全!
通过上述内容,你可以对 C语言 的基础知识有一个全面的了解。包括程序结构、数据类型、变量和常量、控制结构、函数、数组和字符串、结构体和联合、枚举和联合、预处理器指令、动态内存分配、文件操作、错误处理、编译器选项、调试和优化、C语言的标准库、编程技巧以及编程习惯等方面的详细讲解。希望这些内容能帮助你更好地理解和使用 C语言。
1086 5
|
8月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
95 4
【C语言入门】初识C语言:掌握编程的基石
|
10月前
|
存储 人工智能 并行计算
探索C语言的奥秘:基础、应用与未来
本文介绍了C语言的广泛应用和基本语法。C语言以其高效、灵活和强移植性在系统级编程、嵌入式系统、游戏开发中扮演重要角色。基础语法包括数据类型与变量(如整型、浮点型、字符型)、运算符与表达式(如算术、关系和逻辑运算)、控制结构(如顺序、选择和循环)。未来,C语言将继续在新领域发展,如并行计算和网络安全,并在AI、大数据时代保持影响力。学习C语言有助于深入理解计算机科学。
|
C语言 容器
C语言经典案例-2
C语言经典案例
166 0
|
C语言
C语言经典案例-1
C语言是很多学习编程的同学最先接触的编程语言,我个人也是,在大一上就是开始接触,但是我比较特殊,在这之前自己先学习了一些其他的编程语言(但是严格说,我大学第一次学的编程语言就是C语言),然后大一上那会C语言就是没有好好听课,现在准备用一段时间捡起来。
81 0
|
10月前
|
存储 安全 程序员
C语言:深入探索与实践
这篇文章探讨了C语言的关键特性和广泛应用。C语言以其结构化编程、指针操作、中间级语言特性和出色的可移植性,在操作系统、嵌入式系统、游戏开发及应用程序等领域中占据重要地位。文中通过代码示例展示了C语言的基本用法,如输入输出、数组与循环以及函数应用。尽管C语言在内存管理和错误处理上存在挑战,但它仍然是编程领域不可或缺的工具,随着技术进步,其影响力预计将持续。