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

Linux C语言指针与内存

DavidChin
难度初级
时长 2小时 5分
  • 一个函数可被多次调用

    查看全部
  • 传入时只是传入了a,b被赋的数值

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

    2021-01-01

  • Array数组其实是一种指针常量,而p则是一种指针变量(数组和指针有一定的通用性,又有一定的差别,指针可以表达数组,而数组不可以表达指针);

    p++:指针偏移,运行效率比数组高;

    为什么p+4;*p=101 与p[4]=101等价???p[4]=101代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置,然后对这个位置进行初始化赋值,即把101赋给这个地址所代表的内存空间。p[4]代表从初始位置(a的地址就始)以四个字节为一步,向前走4步,到达某个位置。*p=101,代表此时指针指向的地址(即走了四步后所在位置)并对这个地址所在的内存空间进行初始化,赋值为101。    

    数组名本质是一个数组开头的地址,可以把它赋值给指针变量

    int array[n]

    int *p=array;

    2也是因为这样:它是一个固定的值(指针常量),不可以

    array+=2;

    指针可以;

    p+=2;

         

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

    2020-12-16

  • 变量名只是代号,变量的本质是内存;

    在标准的C语言中,不允许直接对内存地址进行操作,只能是对操作系统已经分配给的内存空间进行操作。(防止用户自己操作内存地址时侵吞系统内存或者其他程序的内存)

    int *p=&a;    p 指针指向的变量地址; *p  指针指向的变量值; &p 指针自己所在的地址。既然一个指针保存的是变量的地址,对32位CPU,地址有4个字节,就需要4个内存单元来存储,所以每次++p在内存里都是跳4格。 

    函数调用信息保存在栈(stack)中。 int *pa=&a指将a的地址传给pa。因此p pa看到的是a的地址(&a)。 而p &pa才能看到pa本身的地址。

    查看全部
  • gdb 是gcc自带的一种调试工具 ;

    gdb -help查看gdb用法; 

    gcc -g +源代码文件-o +执行文件名(.out 类型) 生成可调试的执行文件;

    gdb +./ 可调试执行文件名;

    进入gdb调试后,l表示查看程序;回车表示继续上一命令;start表示调试,会自动在main函数第一行程序加断点;n表示执行新行;s(step)表示进入函数中,需执行到函数所在行;p+变量名表示打印变量数值,bt 查看堆栈;f 1:切换到堆栈中编号为1的函数中;q:退出调试;

    change(int a,int b);实际过程中,只是传递给了a,b数值,作用范围仅在函数内部,故不起换值作用,而change(int *a,int *b )传递给了参数地址,对存储单元中的值进行替换,起实际作用。

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

    2020-12-15

  • 系统内存分配

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

    2020-12-12

举报

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

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