C语言深度剖析知识点

「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

  1. 在win中双击的本质是运行程序,将我们的程序加载到内存当中。

  2. 任何程序在被运行之前都必须加载到内存当中(为了快),那没有加载之前呢,程序没有加载之前在硬盘当中。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呢

  1. 局部的(全局会导致CPU寄存器被长时间占用)
  2. 不会被写入的(写入需要写回内存,后续还要读取检测的话,register的意义何在)
  3. 高频被读取的(提高效率所在)
  4. 如果要使用,请不要大量使用,因为寄存器数量有限。

有一个超级重要的一点,就是register修饰的变量,不能取地址(因为已经放到寄存器中了,地址是内存相关的概念)

外部声明extern

  1. 声明没有开辟空间,
  2. =100 是赋值或初始化
  3. 所有的变量声明的时候,不能设置初始值
1
c复制代码例如extern int g_val;绝对不可以写成extern int g_val = 100;

头文件.h

头文件怎么写才是最最省事的

#pragma once //这个是避免重调用

  1. C头文件
  2. 所有的变量的声明
  3. 所有的函数的声明
  4. #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
2
3
4
c复制代码67   
64+2+1
2^6+2^1+2^0
0000 0000 0000 0000 0000 0000 0100 0011

二转十

1
2
3
4
c复制代码0000 0000 0000 0000 0000 0010 0100 0011
2^9+2^6+2^1+2^0
512+64+2+1
579

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%