【问题标题】:How to dereference and print each element of a pointer array?如何取消引用和打印指针数组的每个元素?
【发布时间】:2020-02-16 06:01:13
【问题描述】:

假设我有一个指针数组:

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}

【问题讨论】:

    标签: c++ gdb


    【解决方案1】:

    我还没有找到比这更好的:

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

    或许能帮上忙。

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

    【讨论】:

    • 我可以在 gdb 中使用吗?
    • 谢谢,我已经解决了所有问题,因为我可以在gdb中使用,它可以完全解决问题,虽然它有点复杂
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2015-03-07
    • 2014-03-25
    • 2019-04-15
    • 2022-01-05
    相关资源
    最近更新 更多