手记

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

  • 课程名称: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的输出变量地址方法很好用,但如果程序不复杂,也可以直接打印出变量地址

0人推荐
随时随地看视频
慕课网APP