继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【备战春招】第13天-C01字符串与数组

taoy
关注TA
已关注
手记 94
粉丝 9
获赞 1
  • 课程名称:Linux C语言指针与内存
  • 课程链接:Linux C语言指针与内存-慕课网 (imooc.com)
  • 章节名称:
    • 第4章:指针与内存
      • 5-1 数组声明的内存排列
      • 5-2 指针运算
      • 5-3 字符数组和指针字符串
      • 5-4 字符数组的深入理解
    • 讲师姓名:DavidChin
  • 时间:2023-02-19 23:30

课程内容

  • 代码中定义2个整型变量,一个长度为2的整型数组,将首个定义变量的地址值赋值给一个指针变量

    • 有了这个指针变量,就几乎可以访问程序中定义的所有变量

    • 访问所有变量代码

      • for (int i = 0; i < 6; i++) {
            printf("*p = %d\n", *p);
            p++;
        }
        p = &a;
        for (int i = 0; i < 6; i++) {
            printf("p[%d]\n", p[i]);// 此处不会修改指针变量指向的地址值
        }
        
      • 在GDB中:p * 0x7fffffffde18可以把该地址中的值打印出来

      • 程序在给变量分配内存地址时,是把同类型的变量分配的地址是在一起的

        • 如定义两个整型变量,其地址内存地址很可能是连续的
        • 如果定义一个整型变量,再定义一个浮点类型变量,再定义一个整型变量,那么两个整型变量地址连续,之后再分配浮点类型变量
      • 在GDB中根据地址值快速输出变量值方法

        • x/3d 0x7fffffffde1c:x表示要输出内存的值,3表示从地址值开始输出三个变量值,d是以十进制形式输出变量值,最后为开始地址值

学习心得

GDB的输出变量地址方法很好用,但如果程序不复杂,也可以直接打印出变量地址
源码
GDB调试

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP