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

Linux C语言指针与内存

难度初级
时长 2小时 5分
学习人数
综合评分9.60
263人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.4 逻辑清晰
  • int *p=&a:定义的指针p是整型数据,p++之后,p中的地址就会增加4个字节。

    这就是指针偏移运算,这种方式比CPU直接取地址效率还要高,所以设计程序都会尽可能地采取这种方式。

    p+=3:将指针向下移动3格,如果p是整型,就移动12个字节。(等价于p[3])

    数组和指针的本质都是地址,所以*pa=array,相当于将array数组的地址赋值给pa指针,这样pa[1]的功能和array[1]的功能就没有区别了。

    数组是指针常量,指针是指针变量,数组的指向对象是固定不变的,指针变量的指向对象会改变,所以这两种指针还是有所差别的,指针能实现数组的功能,但是数组不一定能实现指针的功能。

    查看全部
    0 采集 收起 来源:指针运算

    2021-07-18

  • 在函数名前加上星号,也可以调用函数,一般用作回调函数使用。(第31行)

    查看全部
  • 全局变量储存在数据段,先申明的地址小,后申明的地址大,调用的函数里的局部变量存放在栈中。

    int整型占用4个字节,变量的内存地址只显示第一个字节。

    编译后的程序,有可能不会将变量按照编写代码的顺序存入内存,因为gcc编译时会对代码进行优化,它会将同类型的变量在内存中放到一起。

    查看全部
  • 调用的哪个函数,运行到函数的哪一行,变量的相关数据都被记录保存到栈当中了。

    p &x:表示查看x变量所在的地址。

    变量的本质是地址,是内存空间。

    标准的编程语言不允许直接对内存地址进行操作,操作系统不允许。

    指针也是一个变量类型,保存内存地址。

    查看全部
  • 0x7fffffffffffffff以下的内存由用户操作,上面的内存地址由操作系统自己调用。

    代码段放编译后的程序,数据段放常量、变量,中间的绿色是自由可分配空间。

    查看全部
    0 采集 收起 来源:内存管理

    2021-07-17

  • 一般用gcc指令编译过的程序不能被用于gdb(一个Linux自带的调试工具)调试,要用gcc -g xxx.c指令才可以。

    用gdb调试要保存.c的源代码,否则会有一些调试功能无法使用(比如调试时无法显示行号)。

    gdb ./xxx.out:表示调试xxx文件

    在调试模式下(括号中含有gdb),输入l(或者list)显示整个源代码,输入break打断点,输入start开始调试(此时会显示断点在哪里),p x表示输出x这个变量的值,n继续下一步执行,当断点打到调用的函数前可以用s指令来进入函数内部,bt查看函数堆栈(可以显示当前函数调用的堆栈情况), f n代表转到相应的标号n堆栈进行函数的调用。

    本次练习案例中,change函数的a和b是形参,他们值的改变,不能代表main函数里的实参也改变了。

    按q退出调试

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

    2021-07-16

  • *a代表指针,&a代表取地址

    查看全部
  • 晚安
    查看全部
  • http://img1.sycdn.imooc.com//604325c80001a86411170632.jpg1

    查看全部
    0 采集 收起 来源:内存管理

    2021-03-06

  • 内存地址采用十六进制数表示,十六进制数都是以0x开头,十六进制数的每一位可以表示四个二进制数,因此对于一个32位系统,其所有的内存空间地址可以被八位十六进制数表示。 每个十六进制的内存地址都指向一个字节的内存空间,因此32位的系统总共可以配置2^10*2^10*2^10*2^2=4GB的内存; 对于64位操作系统,只有前48位编码的地址用于程序存储,后十六位为系统内核保留使用的地址编码段; 内存地址从低到高依次编码存储代码段(函数体指令等)、数据段(常量和全局变量)、堆、自由空间、栈。
    查看全部
  • 内存
    查看全部
  • 什么?
    查看全部
  • 你好啊
    查看全部
    0 采集 收起 来源:gdb工具的使用

    2021-01-26

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

    2021-01-26

  • 如果想用GDB gcc -g *.c -o *.out
    查看全部
    0 采集 收起 来源:gdb工具的使用

    2021-01-26

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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