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

Linux C语言指针与内存

DavidChin
难度初级
时长 2小时 5分
  • 20161011 gdb工具(分析原理和结果) gcc 的调试工具 gdb(gdb -help) gcc -g main.c -main.out (调试模式) 调试命令: gdb main.out l(list 显示源代码,l 或者 enter 继续执行l 继续显示) 1 break 12(行号) 打断点 2 start 单步调试 3 n(next 下一行) 4 p a (print 打印变量a) 5 s (step 进入方法,n执行下一行) 6 bt 查看函数堆栈 7 f 切换函数堆栈(f 1 切换到1) 8 q 退出调试 9 p *a(int *a 时 p a 打印出的是a的内存地址,p *a打印的是这个地址里对应的值.P &a 显示a的内存地址空间 P &functionname p + &函数名,显示函数程序在代码段的内存地址)
    查看全部
  • 1.void change(int *a,int *b) 其中*a为指针参数,*+任意参数或者变量均为指针参数或者变量 在调用该函数时需要在参数前+& 即: change(&a,&b);
    查看全部
  • char str1[] = "Hello"; char str3[5]; str1 = "HelloWorld"; 很有意思 : (1)当 str1 声明时,长度为 5 ,str3 也是数组类型,与str1都在同一个内存空间中,并且在 str1 之后声明 , 他们的地址应该是连续的; (2)当改变 str1 的值为 “HelloWorld”时,str1之前的大小装不下这么多字符,就会使用后面的内存地址,str3 本是空的并没有赋值,但是由于 str1的内存溢出,装到了str3中,所以str3也是有值的; (3)总之,数组内存溢出是件危险的事;
    查看全部
  • C 语言的 \0 代表结束
    查看全部
  • 数组和指针有一定的通用性: 但又有一定的差别, 数组声明后,地址就不再改变,数组名称相当于指针常量; int *p = array; 而 p 是变量指针,可以改变;
    查看全部
    0 采集 收起 来源:指针运算

    2016-12-11

  • 跟据 c 语言语法: int *p = &a; // 取得地址值; p[3] 相当于 p+=3 , 表示内存地址向后移动三格;
    查看全部
    0 采集 收起 来源:指针运算

    2018-03-22

  • 为什么从 14 加到 18 , 而不是 15、16、17 .... 是因为 int 类型变量是占 4 个字节的, 所以在当使用 p++ 时,变量所在的地址值实际上加了4.
    查看全部
    0 采集 收起 来源:指针运算

    2016-12-11

  • 在一个变量前面如果不加 * 号,会返回变量指向的地址; 在变量前面加 * 号, 在数据段(堆栈): 会根据地址找到对应的值, 在代码段: 会根据地址找到对应的函数.
    查看全部
  • 32 位内存地址指针占 4 个字节,64位操作系统内存地址指针占用8个字节; 内存地址的大小决定了所在范围。
    查看全部
  • 计算机内存由操作系统来统一管理;
    查看全部
    0 采集 收起 来源:内存管理

    2016-12-10

  • 32位操作系统只能有 4g 内存的原因,地址总线;
    查看全部
    0 采集 收起 来源:内存管理

    2016-12-10

  • bt 命令进入函数栈 , f num 命令进行切换; 如果不用指针 , 默认情况下进行值传递 , 程序执行过程中只改变当前作用域的变量值; 编译时使用: cc -g file.c -o file -g 表示添加调试信息;
    查看全部
    1 采集 收起 来源:gdb工具的使用

    2016-12-10

  • 1.通过 gdb ./name.out 进入调试模式; 2.通过 l 命令查看源代码; 3.通过 break line-num 设置断点; 4.通过 start 开始单步调试,默认断点为line-1; 5.通过 s 进入函数体 ,q 退出调试; 6.通过 p 打印函数值 , n 进行下一步;
    查看全部
    0 采集 收起 来源:gdb工具的使用

    2016-12-10

  • 指针使用语法
    查看全部
  • 栈的特点:先进后出
    查看全部

举报

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

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