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

Linux C语言指针与内存

DavidChin
难度初级
时长 2小时 5分
  • 230=G 240=T
    查看全部
    0 采集 收起 来源:内存管理

    2018-01-20

  • start开始调试 n下一步 p打印 s进入子函数
    查看全部
  • gdb打印: p &a;或p/3d 0xffffff14表示从此地址连续打3个变量值出来。
    查看全部
  • (* faddr)(int a)可表示调用faddr地址处的函数,a是给这个函数传参。这就是回调函数。
    查看全部
  • 代码段存代码,数据段存变量,栈存的调用函数
    查看全部
  • 代码段从低往高存,栈从高往低存。
    查看全部
  • x64机器中指针是64bit
    查看全部
  • 调函数可以传变量值,函数内return。或者直接传指针。&a指变量a的指针。
    查看全部
  • gdb调试工具,配合gcc使用
    查看全部
  • - gcc -g main.c -o main.out - gdb ./main.out - list - l (显示完整代码) - start (开始执行程序) - p a (printf a变量) - n (继续执行) - p b (printf b 变量) - n - p a (......) - p b (......) - n (继续执行下一行) - s (查看函数里面) - n (执行下一行) - bt (查看函数的数量 和堆栈,函数在哪一行被调用) - p a (打印函数里面的变量) - f 1 (跳到函数1的堆栈里面) - n (继续执行) - p a - p b (继续查看a和b变量的值)
    查看全部
  • 操作系统会把同一类型的数据放在一起
    查看全部
  • 字符串在遇到\0时就会停止不会执行后面的 数组赋值时不要溢出 会覆盖其他地址甚至其他数据 数组和数组地址不是连续的 会空几个地址 数组其实就是连续的地址 比如可以用for循环挨个打印元素 在char数组里 \0也是一个元素 在字符串中是隐藏的元素 在单个字符元素时要以‘\0’结尾 数组和指针的差别 数组的开始地址不能改变 但可以改变他指向的地址的内容 而指针可以改变自己的开始地址也可以改变地址里的类容 指针字符串 指向的对象的内容不能改变 这个内容是一个常量 存放在数据段 但可以改变对象
    查看全部
  • char类型的指针变量 里面的值在代码段 用scanf输入数组类型的值时 可以不用加& 因为数组名称本身就是地址 指针类型的字符串不能输入 字符串遇到\0就结束不会打印后面
    查看全部
  • p+=3改变了p的地址 p【3】=x没有改变p的地址
    查看全部
    0 采集 收起 来源:指针运算

    2017-12-13

  • int arr[3]; arr[0]=4; arr[1]=5; arr[2]=6; int i; int *p,j; for(i=0;i<3;i++) printf("arr[%d]=%d\n",i,arr[i]); for(p=arr,j=arr,i=0;i<3;i++,j++) printf("p[%d]=%d %p j>>%d=%d %p\n",i,p[i],p,i,*j,j); 输出结果 arr[0]=4 arr[1]=5 arr[2]=6 p[0]=4 0x7fff883b1d20 j>>0=4 0x7fff883b1d20 p[1]=5 0x7fff883b1d20 j>>1=5 0x7fff883b1d24 p[2]=6 0x7fff883b1d20 j>>2=6 0x7fff883b1d28 通过实验得知 变量和数组的地址不一定是连在一起的 但是同一数组的元素是连着的 第一种 j++ 表示指针里保存的地址换成下一个数据地址,也就是改变了j的值 所以可以吧一个数组赋值给一个指针变量(赋值格式int *j=arr;)然后通过循环每次自增1来遍历这个数组 注意这种方法每次遍历都会改变j的值 即j保存的地址 *j打印保存的地址指向的值 j打印保存的地址 第二种 在把arr数组赋值给指针变量p后,p在转换打印时可以直接当成数组arr使用 比如p【1】p【2】等同于arr【1】arr【2】 注意 这种方法并不改变p保存的地址 即p保存的arr数组的第一个元素地址
    查看全部

举报

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

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