diff --git a/docs/notes/01_c-basic/06_xdx/assets/4.svg b/docs/notes/01_c-basic/06_xdx/assets/4.svg
new file mode 100644
index 0000000..7891ad7
--- /dev/null
+++ b/docs/notes/01_c-basic/06_xdx/assets/4.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/docs/notes/01_c-basic/06_xdx/assets/5.png b/docs/notes/01_c-basic/06_xdx/assets/5.png
new file mode 100644
index 0000000..9c383d6
Binary files /dev/null and b/docs/notes/01_c-basic/06_xdx/assets/5.png differ
diff --git a/docs/notes/01_c-basic/06_xdx/assets/6.svg b/docs/notes/01_c-basic/06_xdx/assets/6.svg
new file mode 100644
index 0000000..9da4367
--- /dev/null
+++ b/docs/notes/01_c-basic/06_xdx/assets/6.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/docs/notes/01_c-basic/06_xdx/assets/7.svg b/docs/notes/01_c-basic/06_xdx/assets/7.svg
new file mode 100644
index 0000000..52aa890
--- /dev/null
+++ b/docs/notes/01_c-basic/06_xdx/assets/7.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/docs/notes/01_c-basic/06_xdx/index.md b/docs/notes/01_c-basic/06_xdx/index.md
index e55f20d..4b613cd 100644
--- a/docs/notes/01_c-basic/06_xdx/index.md
+++ b/docs/notes/01_c-basic/06_xdx/index.md
@@ -208,13 +208,101 @@
# 第三章:指针的理解和定义(⭐)
-## 4.1 概述
+## 3.1 变量的访问方式
-*
+* 计算机中程序的运行都是在内存中进行的,变量也是内存中分配的空间,且不同类型的变量占据的空间大小不同,如:char 类型的变量是 1 个字节,short 类型的变量是 2 个字节,int 类型的变量是 4 个字节...
+* 之前我们都是通过`变量名(普通变量)`访问内存中存储的数据,如下所示:
+
+```c
+#include
+
+int main() {
+
+ // 定义变量,即:开辟一块内存空间,并将初始化值存储进去
+ int num = 10;
+
+ // 访问变量,即:访问变量在内存中对应的数据
+ printf("num = %d\n", num);
+
+ // 给变量赋值,即:给变量在内存中占据的内存空间存储数据
+ num = 100;
+
+ // 访问变量,即:访问变量在内存中对应的数据
+ printf("num = %d\n", num);
+
+ return 0;
+}
+```
+
+* 上述的这种方式也称为`直接访问`;当然,既然有`直接访问`的方式,必然有`间接访问`的方式,如:`指针`。
+
+> [!IMPORTANT]
+>
+> * ① 我们通过`变量名(普通变量)`访问内存中变量存储的数据,之所以称为`直接访问`的方式,是因为对于我们写程序而言,我们无需关心如何根据内存地址去获取变量对应的数据,以及如何根据内存地址将数据存储到对应的内存空间,这些操作步骤都是`编译器`帮助我们在底层完成的(自动化)。
+> * ② 但是,我们也可以通过`内存地址`去操作内存中对应的数据(手动化),这种方式就称为`间接访问`的方式了,相对于`直接访问`方式来说,要理解的概念和操作的步骤要比之间`直接访问`方式要多很多,但是效率高。
+
+## 3.2 内存地址和指针
+
+* 其实,在之前《数组》中,我们就已经讲解了`内存地址`的概念了,即:操作系统为了更快的去管理内存中的数据,会将`内存条`按照`字节`划分为一个个的`单元格`,并为每个独立的小的`单元格`,分配`唯一的编号`,即:`内存地址`,如下所示:
+
+![](./assets/4.svg)
+
+> [!NOTE]
+>
+> 有了内存地址,就能加快数据的存取速度,可以类比生活中的`字典`,即:
+>
+> * ① 内存地址是计算机中用于标识内存中某个特定位置的数值。
+> * ② 每个内存单元都有一个唯一的地址,这些地址可以用于访问和操作存储在内存中的数据。
+
+* 对于之前的代码,如下所示:
+
+```c
+#include
+
+int main() {
+
+ // 定义变量,即:开辟一块内存空间,并将初始化值存储进去
+ int num = 10;
+
+ return 0;
+}
+```
+
+* 其在内存中,就是这样的,如下所示:
+
+![](./assets/5.png)
+
+* 虽然,之前我们在程序中都是通过`变量名(普通变量)`直接操作内存中的存储单元;但是,编译器底层还是会通过`内存地址`来找到所需要的存储单元,如下所示:
+
+![](./assets/6.svg)
+
+> [!NOTE]
+>
+> 通过`内存地址`找到所需要的`存储单元`,即:内存地址指向该存储单元。此时,就可以将`内存地址`形象化的描述为`指针👉`,那么:
+>
+> * ① `变量`:命名的内存空间,用于存放各种类型的数据。
+> * ② `变量名`:变量名是给内存空间取一个容易记忆的名字,方便我们编写程序。
+> * ③ `变量值`:变量所对应的内存中的存储单元中存放的数据值。
+> * ④ `变量的地址`:变量所对应的内存中的存储单元的内存地址,也可以称为`指针`。
+>
+> 总结:内存地址 = 指针。
+
+* `普通变量`所对应的内存空间`存储`的是`普通的值`,如:整数、小数、字符等;`指针变量`所对应的内存空间`存储`的是另外一个变量的`地址(指针)`,如下所示:
+
+![](./assets/7.svg)
+
+> [!NOTE]
+>
+> 有的时候,为了方便阐述,我们会将`指针变量`称为`指针`。但是,需要记住的是:
+>
+> * 指针 = 内存地址。
+> * 指针变量 = 变量中保存的是另一个变量的地址。
+>
+> 下文中提及的`指针`都是`指针变量`,不再阐述!!!
-## 4.2 普通变量和指针变量的区别
+## 3.2 普通变量和指针变量的区别
在 CLion 中使用 GDB 调试时,可以通过反编译代码来查看指针变量和普通变量的区别。下面是具体的步骤:
@@ -283,15 +371,15 @@ int main() {
-# 第五章:指针的运算(⭐)
+# 第四章:指针的运算(⭐)
-## 5.1 概述
+## 4.1 概述
-## 5.2 总结
+## 4.2 总结
* 在 C 语言中,`普通变量`是直接存储`数据`的`变量`。对于普通变量,支持的操作包括:
* ① **赋值操作**:给变量赋值,如:`int a = 5`。