如何取消引用和打印指针数组的每个元素?

How to dereference and print each element of a pointer array?

本文关键字:数组 指针 元素 打印 何取消 取消 引用      更新时间:2023-10-16

假设我有一个指针数组:

struct S {int x;};
S *arr[3] = {new S{1}, new S{2}, new S{3}};

我想取消引用并打印数组的每个元素gdb

打印一个元素很简单:

(gdb) p *arr[0]                                                                                            
$1 = {x = 1}

但我想以这种方式打印数组中的每个元素。

我尝试了p arr,但它输出指针,而不是它们指向的对象:

(gdb) p arr
$1 = {0x613c20, 0x613c40, 0x613c60}

我没有找到比这更好的:

(gdb) set $i=0
(gdb) p *arr[$i++]
$102 = {x = 1}
(gdb) 
$103 = {x = 2}
(gdb) 
$104 = {x = 3}
(gdb)

也许它可以提供帮助。

注意:只需按return即可显示下一个值。