c - 在指针上调试 C 程序时出错

标签 c arrays linux pointers gdb

C代码如下:

#include<stdio.h>

int main()
{
    int a[]={0,1,2,3,4};
    int*p[]={a,a+1,a+2,a+3,a+4};
    int**ptr=p;
    ptr++;

    printf("%d , %d  ",*ptr-a , **ptr);
    *ptr++;
    printf("\n%d , %d  ",*ptr-a , **ptr);
    *++ptr;
    printf("\n%d , %d ",*ptr-a , **ptr);
    ++*ptr;
    printf("\n%d , %d ", *ptr-a , **ptr);

    return 0;
}

the gdb error highlighted in black??

我无法理解代码中的错误以及应该修改的内容。

最佳答案

你还没有在 gdb 中执行第 8 行。

8    int **ptr = p;

所以到目前为止 ptr 还没有在你的程序中定义。因此,无法访问它。您可以在 gdb 提示符下按 n 命令,然后按 print

(gdb) n 
(gdb) print *ptr

此外,您的程序应该在 printf 中使用 %ld 而不是 %d 作为格式说明符,以消除编译器警告,如

printf("%ld , %ld  ",*ptr-a , **ptr);

关于c - 在指针上调试 C 程序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45436518/

相关文章:

arrays - 在由可变结构元素组成的数组中的数据中使用 findmin() - Julia

javascript - 如何在 JavaScript 数组内部复制数组?

linux - 在 Linux 上接收所有多播 ICMPv6 数据包

linux - 无法从 Linux 机器远程登录到本地主机

c - 在 C 中使用 C++ 可能性

c - elf .rel.text 部分 R_386_32/R_386_PC32 的含义

c - 用随机字母填充二维数组-C编程

c - 使用 perf 分析 sleep 时间

c++ - 为什么没有int128_t?

linux bashrc 别名以打开终端并运行各个脚本