当前位置:首页>Excel>C语言二维数组详解(基础入门):从 Excel 表格到内存长龙

C语言二维数组详解(基础入门):从 Excel 表格到内存长龙

  • 2026-07-17 00:11:39
C语言二维数组详解(基础入门):从 Excel 表格到内存长龙

现在,学完一维数组你可能觉得「数组嘛,就是一串连续的数据,搞定」。但现实世界里有太多数据天然就是表格状的——成绩单、棋盘、像素图片……这时候一维数组就不够用了。这篇文章我们专攻基础:二维数组是什么、怎么创建、怎么使用,以及它在内存里的真实样子。


一、先想一个问题:为什么需要二维数组?

假设你是老师,班上有 3 个学生,每个学生考了 4 门课。成绩长这样:

         语文  数学  英语  体育张三     85    92    78    88李四     79    85    90    82王五     92    88    85    91

如果用一维数组存,你只能这样:

int scores[12] = {85,92,78,8879,85,90,8292,88,85,91};

问题是——拿到第 7 个数(90),它到底是哪个学生的哪门课?你得自己在脑子里算:「第 7 个 → 第二个人 → 第三门 → 李四的英语」。这不仅麻烦,代码操作也极其别扭。

二维数组就是来解决这个问题的。 它让你用「第几行、第几列」的方式直接定位数据,就像查 Excel 表格一样自然。

// 3个学生(行) × 4门课(列)int scores[3][4] = {    {85927888},  // 张三    {79859082},  // 李四    {92888591}   // 王五};// scores[1][2] → 第1行第2列 → 李四的英语 → 90

好,现在你知道「为什么」了,我们正式开始。


二、二维数组到底是什么?

2.1 官方定义

二维数组:相同数据类型元素按「行」和「列」排列成的矩形集合。

  • 相同数据类型
     — 一个二维数组里所有元素类型一样(全是 int,或全是 double,不能混)
  • 行和列
     — 横的叫行(row),竖的叫列(column)
  • 矩形
     — 每行的列数一样多,不存在第一行 3 列、第二行 5 列的不规则形状

2.2 用图来理解

假设 int arr[2][3],逻辑结构:

        列[0]     列[1]     列[2][0]   arr[0][0]  arr[0][1]  arr[0][2][1]   arr[1][0]  arr[1][1]  arr[1][2]

一共 2 行 × 3 列 = 6 个元素。每个元素用 数组名[行号][列号] 唯一确定。

2.3 换个角度:二维数组 = 「以一维数组为元素的数组」

这是一个非常重要的认知,慢慢说。

先回想一维数组:

int a[3] = {102030};

a 是一个数组,里面有 3 个 int 类型的元素。

现在,把 int 这个类型换成「长度为 3 的一维 int 数组」:

int arr[2][3];

理解为:arr 是一个数组,里面有 2 个元素每个元素本身又是一个长度为 3 的一维 int 数组

arr[0] → [ ][ ][ ]    ← 这是一个 int[3] 类型的一维数组arr[1] → [ ][ ][ ]    ← 这又是一个 int[3] 类型的一维数组

🧠 这个理解方式非常重要,后面学「数组指针」「动态二维数组」时你会反复用到。现在只需记住:二维数组的每一行,本质上就是一个独立的一维数组。

2.4 行号和列号都从 0 开始

C 语言所有数组下标从 0 开始:

  • 行号范围:0 到 行数 - 1
  • 列号范围:0 到 列数 - 1

int arr[2][3] 中:行号只能用 01;列号只能用 012


三、怎么定义一个二维数组?

3.1 基本语法

数据类型  数组名[行数][列数];
组成部分
含义
示例
数据类型
存什么类型的数据
int
doublechar
数组名
你起的名字,跟变量命名规则一样
arr
matrixscores
[行数]
一共几行,必须是常量常量表达式
2
3+2
[列数]
每行几列,同样必须是常量或常量表达式
3
5

3.2 举个最简例子

int arr[2][3];

这行代码做了什么?

  1. 向内存申请 2 × 3 = 6 个 int 大小(共 6 × 4 = 24 字节)的连续空间
  2. 给这块空间起名叫 arr
  3. 用「2 行 3 列」的逻辑视图组织这 6 个 int

但是——此时数组里都是「垃圾值」(未初始化,里面是内存残留的随机数据),跟普通变量一样,定义 ≠ 赋值。

3.3 行数和列数为什么必须是常量?

int n = 3;int arr[2][n];  // ❌ 传统C语言不允许(除非用C99变长数组,下篇讲)

编译器在编译阶段就要知道数组占多少内存。变量的值要到运行时才知道,编译时没法确定。


四、初始化——给二维数组赋初值的四种写法

这是实际写代码最频繁的操作,每种都要搞明白。

4.1 写法一:完全初始化(线性填充)

int arr[2][3] = {123456};

填充规则:从第 0 行第 0 列开始,从左到右、一行填满自动换到下一行,依次填入。

过程追踪:

填第1个值 1 → arr[0][0] = 1填第2个值 2 → arr[0][1] = 2填第3个值 3 → arr[0][2] = 3   ← 第0行填满,自动换行填第4个值 4 → arr[1][0] = 4填第5个值 5 → arr[1][1] = 5填第6个值 6 → arr[1][2] = 6最终:arr[0][0]=1  arr[0][1]=2  arr[0][2]=3arr[1][0]=4  arr[1][1]=5  arr[1][2]=6

💡 这种写法数据多了很难一眼看出哪个值属于哪一行。

4.2 写法二:分组初始化(大括号嵌套)⭐ 推荐

int arr[2][3] = {    {123},   // 第0行    {456}    // 第1行};

每对大括号 { } 代表一行,行和列一目了然,日常开发强烈推荐。

某一行没给全的情况:

int arr[2][3] = {    {12},      // 只给了2个值    {4}          // 只给了1个值};

规则:没给到的元素,编译器自动填 0。

结果:arr[0][0]=1  arr[0][1]=2  arr[0][2]=0  ← 缺的自动补0arr[1][0]=4  arr[1][1]=0  arr[1][2]=0  ← 缺的自动补0

⚡ 记忆口诀:有就填,没有就补 0。

4.3 写法三:不完全初始化

int arr[2][3] = {1234};  // 只给了4个值

结果:

arr[0][0]=1  arr[0][1]=2  arr[0][2]=3arr[1][0]=4  arr[1][1]=0  arr[1][2]=0  ← 自动补0

C 语言规定:只要初始化列表给了至少一个值,所有未被显式赋值的元素,统统自动置为 0。

一键清零——最极端的用法:

int arr[2][3] = {0};

把整个二维数组所有元素都设为 0。原理:{0} 先把 arr[0][0] 设为 0,其余元素因为「未显式赋值」自动补 0。

⚠️ {0} 只能做到全 0,不能把数组初始化成其他统一值。{1} 的结果是只有 arr[0][0] = 1,其余全是 0。

4.4 写法四:省略行号

int arr[][3] = {123456};

行号可以不写,编译器自己推算:6 个元素 ÷ 3 列 = 2 行。

int arr[][3] = {1234567};  // 7÷3=21 → 3

但列号绝对不能省! 不告诉编译器每行几列,它怎么知道 {1,2,3,4,5,6} 该排成 2×3 还是 3×2 还是 1×6

int arr[][] = {1,2,3,4,5,6};  // ❌ 编译报错!int arr[2][] = {1,2,3,4,5,6};  // ❌ 编译报错!

📌 黄金法则:可以省略行,绝对不能省略列。

4.5 四种初始化总结

写法
代码示例
适用场景
线性完全填充
int a[2][3] = {1,2,3,4,5,6};
数据少、不在意可读性
分组填充 ⭐
int a[2][3] = {{1,2,3},{4,5,6}};日常开发首选
不完全初始化
int a[2][3] = {1,2};
只需初始化前几个值
省略行号
int a[][3] = {1,2,3,4,5,6};
数据量大不想手数行数

🔴 碎碎念:初始化常见坑

坑位
错误示例
后果
正确做法
数据给多了
int a[2][3] = {1,2,3,4,5,6,7};
编译警告或报错
检查元素个数 = 行×列
省略了列
int a[2][] = {1,2,3};
编译报错
列必须写:int a[][3]
以为 {1} 是全 1
int a[2][3] = {1};
只有 a[0][0]=1,其余全是 0
全 1 只能用循环赋值
定义完直接用
int a[2][3]; printf("%d",a[0][0]);
输出随机垃圾值
先初始化再使用

五、怎么访问二维数组里的元素?

5.1 用下标精确定位

访问格式:数组名[行号][列号],把它想成坐标系:

        列0    列1    列20   [ 1 ]  [ 2 ]  [ 3 ]1   [ 4 ]  [ 5 ]  [ 6 ]
  • 想取 3?第 0 行、第 2 列 → arr[0][2]
  • 想取 4?第 1 行、第 0 列 → arr[1][0]
  • 想取 6?第 1 行、第 2 列 → arr[1][2]

5.2 打印单个元素

#include<stdio.h>intmain(){    int arr[2][3] = {123456};    printf("%d\n", arr[0][2]);  // 输出:3    printf("%d\n", arr[1][0]);  // 输出:4    printf("%d\n", arr[1][2]);  // 输出:6    return 0;}

arr[行号][列号] 等价于一个普通 int 变量——可以打印、赋值、参与运算:

arr[0][1] = 99;                    // 赋值int sum = arr[0][0] + arr[1][1];   // 参与运算

🔴 碎碎念:下标易错

错误
示例(int arr[2][3]
后果
行越界
arr[2][0]
 — 行号只能是 0 或 1
访问到别人的内存,可能崩溃
列越界
arr[0][3]
 — 列号只能是 0、1、2
同上
写成 arr[0,2]
这是逗号表达式,等价于 arr[2]
编译可能不报错,结果完全不对

六、遍历——用双重循环访问所有元素

6.1 为什么需要两层循环?

二维数组有两维(行 + 列),一层循环只能搞定一维。必须嵌套:

  • 外层循环 → 控制「当前在处理第几行」
  • 内层循环 → 控制「当前行里的第几列」

6.2 完整代码,逐行讲解

#include<stdio.h>intmain(){    int arr[2][3] = {123456};    int row = 2;   // 总行数    int col = 3;   // 总列数    for (int i = 0; i < row; i++)        // ① 外层:第 i 行    {        for (int j = 0; j < col; j++)    // ② 内层:该行第 j 列        {            printf("%d ", arr[i][j]);    // ③ 打印当前元素 + 空格        }        printf("\n");                    // ④ 该行结束,换行    }    return 0;}

逐行解释:

  • ① for (int i = 0; i < row; i++)i 从 0 走到 1(共 2 行),每轮处理一行
  • ② for (int j = 0; j < col; j++)j 从 0 走到 2(每行 3 列)
  • ③ printf("%d ", arr[i][j]):打印当前元素,%d 后面的空格让元素分开
  • ④ printf("\n")注意它在内层循环外面——一行所有列打完再换行

6.3 执行过程逐步追踪

i=0 时(处理第 0 行):  j=0 → 打印 arr[0][0] = 1  j=1 → 打印 arr[0][1] = 2  j=2 → 打印 arr[0][2] = 3  内层循环结束 → 换行i=1 时(处理第 1 行):  j=0 → 打印 arr[1][0] = 4  j=1 → 打印 arr[1][1] = 5  j=2 → 打印 arr[1][2] = 6  内层循环结束 → 换行i=2 → 不满足 i < row → 外层循环结束

输出:

1 2 34 5 6

💡 C 语言圈子里习惯 i 代表行、j 代表列。另外行优先遍历(外层行,内层列)效率最高,因为内存就是按行存储的


七、从键盘输入数据到二维数组

7.1 先回顾 scanf

int x;scanf("%d", &x);  // 从键盘读一个整数,存入变量 x
  • "%d"
    :告诉程序「我在等一个整数」
  • &x
    :取地址,告诉程序「存到 x 所在的内存位置」

7.2 给二维数组输入数据

#include<stdio.h>intmain(){    int arr[2][3];                    // 先定义,不初始化    int row = 2, col = 3;    // 输入阶段    for (int i = 0; i < row; i++)        for (int j = 0; j < col; j++)            scanf("%d", &arr[i][j]);  // 逐个读取    // 输出验证    for (int i = 0; i < row; i++)    {        for (int j = 0; j < col; j++)            printf("%d ", arr[i][j]);        printf("\n");    }    return 0;}

输入过程追踪(假设你输入 10 20 30 40 50 60):

i=0, j=0: scanf 读到 10 → arr[0][0] = 10i=0, j=1: scanf 读到 20 → arr[0][1] = 20i=0, j=2: scanf 读到 30 → arr[0][2] = 30i=1, j=0: scanf 读到 40 → arr[1][0] = 40i=1, j=1: scanf 读到 50 → arr[1][1] = 50i=1, j=2: scanf 读到 60 → arr[1][2] = 60

输出:

10 20 3040 50 60

💡 scanf 会跳过空格和换行,所以用空格分隔(10 20 30)或每行换行输入都可以。

🔴 碎碎念:输入易错点

易错点
错误写法
正确写法
原因
忘了 &
scanf("%d", arr[i][j]);scanf("%d", &arr[i][j]);
scanf 需要变量的地址
占位符写错
scanf("%f", &arr[i][j]);scanf("%d", &arr[i][j]);
int 用 %d,double 用 %lf
输入数量不够
只输 3 个数给 2×3 的数组
输够 6 个或 Ctrl+Z 结束
程序会一直等你

八、二维数组在内存中的真面目 ⭐⭐⭐

这是全篇最重要的部分,搞懂了它,后面指针、动态内存都不虚。

8.1 先做实验:打印每个元素的地址

#include<stdio.h>intmain(){    int arr[2][3] = {0};    for (int i = 0; i < 2; i++)        for (int j = 0; j < 3; j++)            printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);    return 0;}
  • &arr[i][j]
    :取 arr[i][j] 这个元素的地址
  • %p
    :专门打印地址的占位符
  • 你运行出的地址值跟我不一样,但地址之间的差值一定相同

输出示例:

&arr[0][0] = 0x6D7AFC08&arr[0][1] = 0x6D7AFC0C     ← 比上一个地址大 4&arr[0][2] = 0x6D7AFC10     ← 比上一个地址大 4&arr[1][0] = 0x6D7AFC14     ← 比 arr[0][2] 大 4(跨行也是连续的!)&arr[1][1] = 0x6D7AFC18     ← 比上一个地址大 4&arr[1][2] = 0x6D7AFC1C     ← 比上一个地址大 4

8.2 分析地址差

int 类型占 4 字节。看上面:

0x6D7AFC08 → 0x6D7AFC0C    差 0x0C - 0x08 = 40x6D7AFC0C → 0x6D7AFC10    差 0x10 - 0x0C = 40x6D7AFC10 → 0x6D7AFC14    差 0x14 - 0x10 = 4...

相邻元素严格差 4 字节,没有跳跃、没有空隙。

8.3 关键结论:行优先(Row-Major)连续存储

arr[0][2](第 0 行最后一个)的地址是 0x6D7AFC10,紧接着 arr[1][0](第 1 行第一个)是 0x6D7AFC14,差 4。

第 0 行和第 1 行在内存里是紧密衔接的——这就是「行优先存储」:先完整存储第 0 行的所有列,紧接着存第 1 行,再接着存第 2 行……

8.4 逻辑视图 vs 物理视图

你脑子里看到的(逻辑视图)           实际内存里存放的(物理视图)┌───────────────────────┐           ┌───┬───┬───┬───┬───┬───┐│ arr[0]:  [1] [2] [3]  │           │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 ││ arr[1]:  [4] [5] [6]  │    =      └───┴───┴───┴───┴───┴───┘└───────────────────────┘           地址递增 →

🧠 核心认知:二维是给你看的,一维才是它本来的样子。二维数组在内存里就是一条长龙,只不过你用「行列」标记给它划分了段落。

8.5 万能地址公式

arr[i][j] 的地址 = 数组首地址 + (i × 总列数 + j) × sizeof(元素类型)

验证:arr[1][2] 在 int arr[2][3] 中的位置:

偏移 = (1 × 3 + 2) × 4 = (3 + 2) × 4 = 5 × 4 = 20 字节arr[1][2] 的地址 = arr[0][0]的地址 + 20                  = 0x6D7AFC08 + 14(十六进制)                  = 0x6D7AFC1C  ✅ 跟实验输出一模一样!

理解这个公式有什么用?

  • 以后学指针操作二维数组,本质就在用这个公式
  • 动态分配二维数组时,要手动算偏移
  • 考试/面试常考题:「给定首地址,求 arr[i][j] 的地址」

🔴 碎碎念:内存相关误区

误区
真相
「arr[0] 和 arr[1] 在内存里是分开的」
紧挨着,没有空隙
「二维数组就是指针的指针」
不是!静态二维数组是一块连续内存,跟指针的指针完全不同
「地址差一定是 4」
取决于类型,char 差 1,double 差 8

本篇(上篇)总结

模块
核心知识点
概念
行列排列的矩形数据集合;可理解为「以一维数组为元素的数组」
定义类型 数组名[行数][列数]
,行列必须是常量
初始化
四种方式:线性填充、分组填充(推荐)、不完全填充(补 0)、省略行号(列不能省)
访问数组名[行号][列号]
,行号和列号都从 0 开始
遍历
双重 for:外层控行(i),内层控列(j)
输入scanf("%d", &arr[i][j])
,别忘了 &
内存行优先(Row-Major)连续存储
;地址 = 首地址 + (i × col + j) × sizeof(type)

本篇到这里,你已经搞懂了二维数组的「是什么」和「怎么基本操作」。下篇我们会进入进阶内容:C99 变长数组、矩阵转置实战、以及 4 道经典面试题,把二维数组的火候真正练到家!


最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-17 01:23:25 HTTP/2.0 GET : https://h.sjds.net/a/543549.html
  2. 运行时间 : 0.124680s [ 吞吐率:8.02req/s ] 内存消耗:4,352.06kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=900190717061708d4c735f53b07d6780
  1. /yingpanguazai/ssd/ssd1/www/h.sjds.net/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/h.sjds.net/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/h.sjds.net/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/h.sjds.net/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/h.sjds.net/runtime/temp/ad153693ed39fba6d1bda2fe72512cde.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/h.sjds.net/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000501s ] mysql:host=127.0.0.1;port=3306;dbname=h_sjds;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000519s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002856s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000352s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000584s ]
  6. SELECT * FROM `set` [ RunTime:0.000209s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000816s ]
  8. SELECT * FROM `article` WHERE `id` = 543549 LIMIT 1 [ RunTime:0.003835s ]
  9. UPDATE `article` SET `lasttime` = 1784222605 WHERE `id` = 543549 [ RunTime:0.018824s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.001302s ]
  11. SELECT * FROM `article` WHERE `id` < 543549 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000467s ]
  12. SELECT * FROM `article` WHERE `id` > 543549 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000524s ]
  13. SELECT * FROM `article` WHERE `id` < 543549 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001457s ]
  14. SELECT * FROM `article` WHERE `id` < 543549 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010857s ]
  15. SELECT * FROM `article` WHERE `id` < 543549 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010597s ]
0.126299s