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

Linux C语言指针与内存

DavidChin
难度初级
时长 2小时 5分
  • "world"在代码段,是在程序编译或运行时加载进去的,是不允许程序员再去修改的,因而阻止了scanf的操作。 程序员可以操作的是堆栈,像声明好函数后它就被加载到堆栈中,还有malloc()操作也是对堆栈的操作,为程序分配内存空间。
    查看全部
  • x/6cb 字符数组的首地址:打印出6个连续的字符
    查看全部
  • 而赋值操作也可以由p+=3; *p=101;变成简单的p[3]=101;
    查看全部
    0 采集 收起 来源:指针运算

    2015-06-26

  • 只要在内存中连续分布,指针的操作p+=3和p[3]是一样的。
    查看全部
    0 采集 收起 来源:指针运算

    2015-06-26

  • x/10d 起始地址:以4个字节为单位往后取10个值
    查看全部
  • 虽然从来没用到过函数指针,不过说白了就是这样: int quadrate(int a); // main中 int a=3; int (*p)(int a); p = &quadrate; int s = (*p) (a); //最后就相当于s(a)
    查看全部
  • 同一个函数可以被多次调用,但内部的静态变量是始终不变的
    查看全部
  • 全局变量int global;和常量const int i;在数据段
    查看全部
    0 采集 收起 来源:内存管理

    2015-06-25

  • `gcc -g main2.c -o main2.out` 加了`-g`参数生成的可执行文件才能被gdb调试 但依然不能删除源代码 然后用gdb命令读取可执行文件:`gdb ./main2.out` l(list的缩写)列出部分源码,再按enter,即再执行l,反复操作,直到能够完整显示全部源码 start:开始调试 p:打印,此时`p a`打印出的a值为0,说明此时`int a=5;`还未生效,需要跳到下一行 n:执行一行,完成后跳到下一行,此时`p a`才打印出5 s:执行一行,如果此行代码中有函数调用,则进入该函数,然后不停`n`可以一行行地执行 bt:查看函数堆栈,此时,#0是change,#1是main f:切换堆栈,此时`f 1`跳回main函数,这里还没有执行change q:退出调试
    查看全部
    0 采集 收起 来源:gdb工具的使用

    2015-06-25

  • 同类型变量会放一起,好处:方便地址对齐
    查看全部
  • 指针变量char *str2 = "hello",用scanf 向str2中输入字符串出错,其实也可以这么理解,指针str2只是指向一个地址,从这个地址开始写入"hello",没有指定内存长度,没有空间去容纳字符串。内存溢出!这个与char str[] = "hello"不同,str已经有了6个字节的内存空间,
    查看全部
  • 如果指针p已指向数组中的一个元素,则p+1(p++)指向同一数组中的下一个元素,而不是将p的值简单的加1。 p += 3 表示将指针向下移动3个元素。
    查看全部
    0 采集 收起 来源:指针运算

    2015-06-23

  • 静态变量 static关键字。函数调用结束后,静态变量的值不消失。对一个C文件里的全局变量和函数加入static的申明 可以防止被其他C文件误调用,即限定作用域只是当前文件,其他文件中即使有同名变量和函数也不影响。
    查看全部
  • 来一个
    查看全部
  • 32位系统指针变量占4个字节,64位系统,要占8个字节,这还是第一次听,涨姿势了!
    查看全部

举报

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

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