为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
C
  • 课程名称: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调试

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
9
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消