C 嗨,我有点困惑,我只是在linux中玩gdb,我遇到了这个

C 嗨,我有点困惑,我只是在linux中玩gdb,我遇到了这个,c,linux,ubuntu,terminal,gdb,C,Linux,Ubuntu,Terminal,Gdb,我的问题是,当我要求调试器表示数组中的元素时,数字代表什么?我知道它不能是ASCII,也不能是5的二进制表示,它是特定int 5的内存位置吗 Breakpoint 1, main () at ArrnLoops.c:5 5 int num[] = {5,15,25,45}; (gdb) display i 1: i = 2981876 (gdb) display num 2: num = {1466917, 1176192, 0, 134513753} 我不知道你说的int5是

我的问题是,当我要求调试器表示数组中的元素时,数字代表什么?我知道它不能是ASCII,也不能是5的二进制表示,它是特定int 5的内存位置吗

Breakpoint 1, main () at ArrnLoops.c:5

5     int  num[] = {5,15,25,45};

(gdb) display i
1: i = 2981876
(gdb) display num

2: num = {1466917, 1176192, 0, 134513753}

我不知道你说的
int5
是什么意思。
5
来自哪里

我猜您看到的只是数组
num
的当前内容

执行在
num
的定义处停止,其中
num
的内存已存在,但尚未执行初始化。所以,您看到的是
num
中的垃圾值

如果您转到下一行并再次显示
num
,您将看到
{5,15,25,45}


这可能同样适用于
i
,尽管从你发布的
i
定义的位置看不到。

我不确定你所说的
int 5
是什么意思。
5
来自哪里

我猜您看到的只是数组
num
的当前内容

执行在
num
的定义处停止,其中
num
的内存已存在,但尚未执行初始化。所以,您看到的是
num
中的垃圾值

如果您转到下一行并再次显示
num
,您将看到
{5,15,25,45}


这可能同样适用于
i
,尽管从您发布的
i
定义位置看不到内容。

它显示的是内容。请记住,当您在第5行中断时,第5行尚未执行,因此没有进行初始化。它向您显示当前在这些内存位置的任意随机值。

它显示内容。请记住,当您在第5行中断时,第5行尚未执行,因此没有进行初始化。它向您显示当前在这些内存位置的任意随机值。

这些不是内存位置。它们称为垃圾值。在未显式分配数组元素之前,它包含垃圾值。

这些不是内存位置。它们称为垃圾值。在未显式分配数组元素之前,它包含垃圾值

Breakpoint 1, main () at ArrnLoops.c:5

5     int  num[] = {5,15,25,45};
行首的
5
是行号。如果您下一步执行,您将看到该命令的行号

显示
命令上,
n:
只是一个结果跟踪编号。我还没有弄清楚如何在其他表达式中直接使用它,但是如果您使用
print
p
),您将看到如下内容:

(gdb) p i
$1 = 2981876
然后可以在其他表达式中使用结果:

(gdb) p $1 / 100
$2 = 29818
行首的
5
是行号。如果您下一步执行,您将看到该命令的行号

显示
命令上,
n:
只是一个结果跟踪编号。我还没有弄清楚如何在其他表达式中直接使用它,但是如果您使用
print
p
),您将看到如下内容:

(gdb) p i
$1 = 2981876
然后可以在其他表达式中使用结果:

(gdb) p $1 / 100
$2 = 29818

我认为
int 5
是指他的数组的第一个元素。我认为
int 5
是指他的数组的第一个元素。你是指
5
/
1:
/
2:
还是
2981876
1466917
等?你是指
5
/
/
1:
/
/
2:
还是
2981876
1466917
等。?