C 嗨,我有点困惑,我只是在linux中玩gdb,我遇到了这个
我的问题是,当我要求调试器表示数组中的元素时,数字代表什么?我知道它不能是ASCII,也不能是5的二进制表示,它是特定int 5的内存位置吗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是
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
等。?