「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战」
在win中双击的本质是运行程序,将我们的程序加载到内存当中。
任何程序在被运行之前都必须加载到内存当中(为了快),那没有加载之前呢,程序没有加载之前在硬盘当中。image-20210820145620874
什么是变量(是什么)
在内存中开辟特定大小的空间,用来保存数据
关键字:内存
本质上变量是在程序运行的时候开辟,或者有些变量是在编译的时候就确定了
一般我们写的代码变量都是在程序运行的时候确定的
如何定义变量(怎么用)
int x = 10;
…..
类型 变量名 = 默认值
为什么定义变量(为什么)
计算机是为了解决人计算力不足的问题而诞生的,即计算机是为了进行计算的。而计算就需要数据。
而计算,任何时刻不是数据立马就被计算的,因此需要东西来暂时存储,所以变量就是用来暂时保存数据,等待之后处理。
最快的关键字register
image-20210820161809631
寄存器
寄存器与其说是存储器,其实更像是 CPU 本身的一部分,只能存放极其有限的信息,但是速度非常快,和 CPU 同步。
高速缓存(CPU Cache)
Cache存储器,电脑中为高速缓冲存储器,是位于CPU和主存储器DRAM(Dynamic Random Access Memory)之间,规模较小,但速度很高的存储器,通常由SRAM(Static Random Access Memory 静态存储器)组成
内存(memory)
使用 DRAM(Dynamic Random Access Memory,动态随机存取存储器)的芯片,比起 SRAM 来说,它的密度更高,有更大的容量,而且它也比 SRAM 芯片便宜不少。
硬盘
如 SSD(Solid-state drive 或 Solid-state disk,固态硬盘)、HDD(Hard Disk Drive,硬盘)。
什么样的变量可以使用register呢
- 局部的(全局会导致CPU寄存器被长时间占用)
- 不会被写入的(写入需要写回内存,后续还要读取检测的话,register的意义何在)
- 高频被读取的(提高效率所在)
- 如果要使用,请不要大量使用,因为寄存器数量有限。
有一个超级重要的一点,就是register修饰的变量,不能取地址(因为已经放到寄存器中了,地址是内存相关的概念)
外部声明extern
- 声明没有开辟空间,
- =100 是赋值或初始化
- 所有的变量声明的时候,不能设置初始值
1 | c复制代码例如extern int g_val;绝对不可以写成extern int g_val = 100; |
头文件.h
头文件怎么写才是最最省事的
#pragma once //这个是避免重调用
- C头文件
- 所有的变量的声明
- 所有的函数的声明
- #define 类型typedef,struct
#include<stdio.h>
#include<windows.h>
静态变量static
static修饰局部变量
更改的是生命周期,作用域不变
image-20210821215721123
image-20210821220245289
static修饰全局变量
static修饰全局变量,该变量只能在本文件内访问,不能被外部文件直接访问
image-20210821225646389
image-20210821231545236
image-20210821231946026
image-20210821232916290
那他变的是什么,还是全局变量吗?是的 他还是全局变量,他是随着整个程序下载到内存中,变成进程之后,这个全局变量一直在,那他本质上是什么,本质上说明生命周期没有变,改变的是作用域。
二进制快速转化口诀
十转二
2^0 <-> 1
2^1 <-> 10
2^2 <-> 100
2^3 <-> 1000
1后面跟n个比特位,就是2^n
1 | c复制代码67 |
二转十
1 | c复制代码0000 0000 0000 0000 0000 0010 0100 0011 |
本文转载自: 掘金