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

Linux C语言指针与内存

难度初级
时长 2小时 5分
学习人数
综合评分9.60
263人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.4 逻辑清晰
    1. 计算机是由逻辑电路元件来组成的

    2. 计算用二进制

    3. 显示为十进制

    4. 编程用十六进制

    5. 内存中最小的单位是字节 1Byte=8bit

    6. 一个十六进制的数字,就可以表示4位二进制数字

    查看全部
  • gdb 断点调试,单点调试

    gcc -g  文件名.out -o   文件名 .out 使用gdb编译

    gbd ./文件名.out  执行

    (gdb) l  或list  显示源代码

    l:(list)列出源码

    回车继续执行刚刚的命令

    start开始执行

    break n ---> 截取第n行断点

    print或p a 打印输出a

    n 跳到下一行

    s 进入函数

    bt 查看函数堆栈

    f 切换

    f 1 跳转到函数1

    q 退出调试



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

    2019-11-12

  • 字符串以\0结束 

    hell\0  以字符串输出%s  hell    以字符输出%c hello   

    \0不输出,换行就空行

    查看全部
  • int (*pquadrate)(int a)=&quadrate;

    int s=quadrate(a);

    c语言不允许直接操作代码段

    代码在代码段

    数据在数据段

    程序编译运行的状态在栈

    变量:在数据段内存中某个地址处存放某个类型的数值

    指针:在数据段内存中某个地址处存放某个地址&a,该地址处存放某个变量

    查看全部
  • 数组与指针的不同在于数组是地址常量,而指针是地址变量

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

    2019-02-11

  • 1.  int quadraate(int a);是一个函数    int (*pquadrate)(int a)=&quadrate;将指针pquadtate指向函数quadrate!    int s=(*pquadrate)(a)可以调用quadtate函数,这种操作常用于回调函数

    查看全部
  • 内存地址从大到小依次为系统内核,栈,堆,数据段,代码段。

    查看全部
  • 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区.

    代码段:把源代码编译完成为目标文件的代码,函数等

    数据段:全局变量、常量、静态变量等

    调用的函数指针的顺序就存放在栈内存,可以理解为栈的先进后出就是函数的调用的顺序

    64进制内指针所占内存均为8字节,而32进制中为4字节。

    查看全部
  • 64位操作系统  c语言 指针类型变量  占用8字节内存空间

    32位 占用4字节

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

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

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

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

    查看全部
  • 1.  int quadraate(int a);是一个函数    int (*pquadrate)(int a)=&quadrate;则是指向这个函数的指针!    int s=(*pquadrate)(a)可以调用函数! 2.一个指针变量*q    不加*号:P q  取出自己地址中存储的值(一个地址)。   加*号:P *q  取出指向地址中存储的值。

    查看全部
  • 操作系统内存管理图

    查看全部
  • gdb调试:

            gcc -g main.c -o main.out 编程可以单步调试的程序;

            l 查看代码;

            start 从main函数开始执行;

            n  下一行

            p 打印

            s 进入调用函数

            bt 查看函数堆栈

            f 栈堆内切换

            q 退出调试


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

    2018-07-04

  • 一根地址总线只能表示2种状态,要么0,要么1; 两根地址总线可以表示4种状态,00,11,10,01。 ...... 同理32根地址总线也就是32bit的操作系统可以表示2的32次方种状态。也就是2的32次方个地址。 也就是2的32次方个字节。 软件系统是不通bit的,2的32次方算出来的单位是4294967296个存储地址,而操作系统的能识别的最小单位是byte,所以我们设计操作系统的,给4294967296个存储地址,每个地址分1个byte,所以总共操作系统有4294967296byte,就是4GB。
    查看全部
    1 采集 收起 来源:内存管理

    2018-05-04

  • 用于调试的编译问件:gcc -g 文件名.c -o 文件名.out

    调试文件:gdb 文件名.out

    进入调试状态,列出当前项目软件源代码:l/list,若显示不完整,直接回车键即可继续显示

                  设置断点:break 行数

                  单步调试:start

                  查看变量的值: p/print 变量名

                  进行下一步:n

                  按N之后,回车即可进行下一步

                  进入某一步中查看,在进行到该步时,:s/step

                  插看函数堆栈:bt

                  查看函数堆栈是,查看某一堆栈:f 堆栈行


    查看全部
  • gdb调试打印内存: x/3d  *    ,说明:x代表打印,3代表打印长度,d代表十进制输出,*代表首地址

    指针运算:int *p; p++ ;  说明:指针运算和类型相关,因为p为int *类型,int类型为4个字节,故p++偏移4个字节。

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

    2018-04-02

举报

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

微信扫码,参与3人拼团

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

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