为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Linux C语言指针与内存_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Linux C语言指针与内存

DavidChin
难度初级
时长 2小时 5分
  • 在gdb里面 你输入bt命令就会显示当前函数堆栈

    假如你是从main函数调用了一个函数add(),在函数add()中又调用一个minus()的,你在进入minus函数输入bt,就会显示:

    #0 minus()....

    #1 ...add()...

    #2 ...mian()...            //..是省略了一些东西

    此时你输入f0  就是进入 minus的堆栈; f1是进入add()的堆栈...

    如果我答的没有错的话。。

    3-1gdb工具的使用 课程有讲。


    查看全部
  • 栈先进后出

    查看全部
  •  代码段里先声明的地址小后大, 栈相反

    查看全部
  • pa pb指针类型   保存内存地址  占8字节

    查看全部
  • pa 只是个代号, *pa=&a后

    打印pa得到0x7fffffffddfc这个地址是a所在的地址

    打印&pa得到0x7fffffffde08这个是pa本身的地址


    查看全部
  • 栈在高地址

    查看全部
  • chengxu2

    查看全部
  • chengxu

    查看全部
  • 12345

    查看全部
  • GDB工具

    s:执行一行代码(若有函数调用进入该函数)【Step Into】

    n:  执行一行代码(函数调用一并执行)【Step Over】

    p<变量名>:显示变量的值

    q:退出

    l:(list)列出源码



    查看全部
    0 采集 收起 来源:gdb工具的使用

    2018-12-09

  • 1 指针 数组 字符串

    2 堆内存 栈内存

    3 GDB  调试工具

    查看全部
  • 指针变量其实代表的是地址,加*表示取这个地址的值
    查看全部
  • 64位操作系统  c语言 指针类型变量  占用8字节内存空间

    32位 占用4字节

    根据内存地址。内存地址从大到小依次为系统内核,栈,堆,数据段,代码段

    代码段地址,先证明的函数内存地址低, 后声明的函数内存地址高

    栈段地址, 在函数被调用时分配内存地址,后进先出,先调用的函数内存地址高,后调用的函数内存地址低;

    数据段地址, 存放全局变量, 静态变量,使用低位地址。

    查看全部
  • gdb 终端调试工具

    gcc -g main.c -o main.out 生成可调式的执行文件

    注意,此时源代码.c文件仍不可删除。否则仍然不支持调试。

    调制过程:

    1、 gdb  main2.c   进入调试模式;

    2、调试模式 输入  “list”  或者 “l”  列出当前项目的软件源代码;

    3、“start”  开始调试,默认断点在main函数的第一行代码;

    4、"p" 表示print , 输出变量值;

    5、“n" 表示执行一行代码挑到下一行;

    6、 “s” 表示按步骤执行代码, 可进入调用函数内部;

    7、“bt” 表示显示函数堆栈, 可显示有哪些函数在运行;此时使用"p"打印的是当前函数中的变量值, 即标号为#0的函数;

    8、"f" 切换当前跟踪的堆栈内函数; eg: f 1(1 为“bt”中的函数编号);

    9、“q”跳出调试模式;

    查看全部
    2 采集 收起 来源:gdb工具的使用

    2018-11-28

  • int *a     int* a  均是合法的指针变量定义方式

    int *a = &b; // 表示将变量b的内存地址保存到指针类型变量a中;

    printf("%d", *a);  // *a 表示(a=0x7ffffffffe4c0)这个地址中保存的值,即变量b的值;a本身为内存地址 用16进制数表示。

    & 符 表示取地址

    函数指针:

    eg:

    //定义函数 参数:int型, 返回值:int型
    int quadrate(int a ){
    .....
    }
    //定义函数指针类型变量 pq指向函数quadrate, 返回值类型+参数类型都需要对应
    int (*pq)(int a) = &quadrate; 
    int s = (*pq)(3); //通过pq指针变量调用函数 quadrate

    函数指针变量保存的是,函数的代码段内存地址, 使用(*pp)调用时, 程序即应用代码段内存中的内容处理参数。

    查看全部

举报

0/150
提交
取消
课程须知
本课程是C语言中级课程,为了更好的学习效果: 1、需要有一定的C语言基础,如果没有基础的同学可以看《C语言入门》这门课。 2、本课程是在Linux环境下讲解,需要熟悉一些Linux命令。如果不了解的话可以在《Linux C语言编程基本原理与实践》这门课程中补充
老师告诉你能学到什么?
1、C语言中的指针是怎么回事 2、Linux下gdb调试工具是怎样使用的 3、指针与内存有着怎样的关系 4、数组与字符串之间的联系
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!