C语言学了这么些天数,果然遇到的第一个难点就是指针~

指针学习就要结束了,先记录并梳理一下来自己初步理解的内容:

在梳理指针之前;

首先要明白虚拟内存中,是存在连续的,线性排列的内存块,每个内存地址代表一内存块,每一内存块占用一字节。每个内存块都拥有自己的地址,都可以存储一字节即八位的二进制数据。

然后是有关指针的内容:

1,指针一般在内存中定义为四个字节,和数据变量一样,它也具有地址,和数据变量不同,他存放的只能为其他变量的地址。

2,指针是也是一种数据类型,它不是单独存在的类型,它是由其他类型派生而来的。(例如类型可以是:指向int的指针类型)

3,一般我们称为的指针具有的属性为三,一为指针类型,二为指针类型的名称即变量,三为指针的内容即指针地址。

举例:int *p = #  那么,int* 为指针类型,p为指针类型的变量,&num为指针类型的值即一个内存地址。

4,一般我们把指针类型的值即指针存储了地址称之为指向,譬如指针A指向变量a就是指针A存储了变量a的地址。

5,指针类型的值仅仅是一段连续内存的首个地址,就是它只能存储一个内存块的地址。

6,数据一般由多个字节组成即占用多个内存块,而指针只能存储一个内存块的的地址,这导致我们解引用时只能读取到一块内存的数据,读取char类型数据还好,可一旦读取长字节数据,就会出现问题。为了避免出现这种问题,就有了指针类型的出现,当我们定义指针类型为int型时,这就导致指针解引用时在对应的内存块依次读取(四个内存块)四个字节的内容。

7,指针类型的定义一定要看指针所指变量的数据类型,指针的类型一定要和所指变量的数据类型一致,原理如上一条。

8,指针p指向存放数据的变量,那么p就是一级指针。若指针p指向另一指针变量,那么它就是二级指针,若p指向指向指针的指针,那么p就是三级指针,可以依次类推。

9,指针的赋值就是取得变量的地址,取址符&。指针可以直接取得数据变量的地址,那么此此指针就是一级指针。

10,指针的赋值非常讲究,编译器只可将两边等级相同的指针着完成赋值。倘若我希望定义指针p为三级指针来操控二级指针q所操控的数据,那么我需要取得二级指针q的地址来赋值给p。所以在很多地方,尤其是存放字符串的指针数组这里,想要输出字符串一定要考量好了该定义几级指针来存放指针数组的指针地址,因为字符串指针为一级,指针数组内的指针元素为二级,指针数组的指针为三级指针,你至少需要定义一个四级指针才能存放指针数组内嵌的指针的地址。

11,用指针输出数据时,需要用到解引用,字符为*,它的功能就是按地址寻此地址对应的变量并获取变量存储的内容,可以获取数据,也可以获取地址,当获取了地址时,倘若为print函数用f%d做输出,是不能立即输出的,需要再次解引用,知道拿到数据为止,倘若输出为%s,是可以直接取出字符串地址给printf输出的。

12,有一规律就是定义几级指针,输出时就解引用几次。

13,数组具有内嵌的指针,可以用数组名来表示,这个内嵌指针的地址为数组首元素地址,这个指针存放的数据为数组首元素的地址。即对与这个内嵌指针来讲,它的地址 = 它的数据 。

14,指针数组*p[5]为长度为5元素均为指针的数组,数组名为p,数组具有内嵌指针就是p,算上数组元素是指针,p为二级指针。数组名p就是数组的指针,进行指针运算时每对p进行+1,就得到了数组下个元素的地址,p的步长为1。

15,数组指针(*p)[5]为指向长度为5没有名字的数组的指针,p是一个指针,是单独的指针,它所指向的数组没有名字,所以数组的内嵌指针不好表示,但是也是存在的,数组内嵌的指针就是一级指针。那么指向这个数组的指针p同样也就是二级指针,但对p运算时p的步长为5,这是由于p为单独的,指向整个数组的地址有关,p每加一跨度都是整个数组。

16,前面说过,数组的内嵌的指针本身的地址等于数组首元素的地址,所以,当数组指针解引用的时候,根据地址寻到的就是数组内嵌指针存储的地址,也是数组首元素的地址,不过这次对地址进行运算,一级指针的运算,跨度就不是整个数组的跨度了,而是1。

17,***p与*(*p)[5]为同级指针(均为三级),只是进行指针运算时解引用之后的指针步长不同。

以后遇到有关指针新的心得体会,可以回来修正或者增添。

C语言指针的心得体会~相关推荐

  1. c语言心得100,c语言课程设计心得体会

    c语言课程设计心得体会 c语言课程设计心得体会范文一: 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技 ...

  2. 对c语言课程的心得体会,C语言课程设计心得体会

    C语言课程设计心得体会 回想这三周C语言课程设计的过程,真是痛并快乐着. 从领到书的那一刻,我就很郁闷?<C语言程序设计>到底事学什么的,到底有什么用.刚开始上课时?还在迷茫这门课程是用来 ...

  3. c语言程序设计作业心得,C语言程序设计实习心得体会

    C 语言程序设计实习心得体会 在这个星期里,我们的学生在老师的带领下进行了 c 语言程序实习学习.在这之前,我们已经对 c 语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围 ...

  4. c语言程序实习心得体会,c语言实习心得体会

    学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题.下面是学习啦带来的c语言实习的心得体会,仅供参考. 一周的C语言实训,虽然时间略显仓促,但却让我学到了很多实际运用 ...

  5. python语言的实验心得体会_爱的五种语言——“好妈妈”培训班家教情商课课堂纪实!...

    12月26日晚,荷地镇"七群体七服务"专题培训暨首届"好妈妈"培训班第五节课开课.讲师团成员.东坪村村委会副主任吴丽云以<爱的五种语言>为题为培训班 ...

  6. c语言编程培训心得体会,编程培训个人心得体会 编程学习心得

    <编程培训个人心得体会 编程学习心得>由会员分享,可在线阅读,更多相关<编程培训个人心得体会 编程学习心得(4页珍藏版)>请在人人文库网上搜索. 1.编程培训个人心得体会 编程 ...

  7. python语言的实验心得体会范文_实验报告个人心得体会范文

    实验报告个人心得体会范文 实验后的实验报告让我们有了总结回顾的效果.下面是 xx 整理的实验报告心得体会范文,以供大家阅读. 实验报告心得体会范文 ( 一 ) 这学期我们开设了计 算机网络技术实验课. ...

  8. python语言的实验心得体会范文_关于实验的心得体会范文5篇

    --文章来源网络,仅供参考 1 关于实验的心得体会范文 5 篇 心得体会是指一种读书. 实践后所写的感受性文字. 是指将学习的东西运用 到实践中去, 通过实践反思学习内容并记录下来的文字, 近似于经验 ...

  9. python语言的实验心得体会范文_实验报告心得体会范文3篇_心得体会

    实验报告心得体会范文 3 篇 _ 心得体会 篇一:实验报告心得体会范文 这次实习, 我对该公司的一些情况有了一个基本的了解, 根据在实习期间的所见, 我对 公司的今后发展提出了以下的建议: 1. 公司 ...

最新文章

  1. centos7 升级openssh7.4之后 报错
  2. 针对脑出血识别的AI匹配准确性
  3. PostgreSQL 常用命令
  4. U3D 动态创建Prefab的多个实例
  5. 标准化条件变量 -- condition_variable
  6. 总结 创建领取 微信会员卡 踩过的坑
  7. linux进程上下文切换的具体过程,Linux实验三 结合中断上下文切换和进程上下文切换分析Linux内核一般执行过程...
  8. QT每日一练day2:day1优化以及QT内存管理机制
  9. LeetCode刷题(36)--Text Justification
  10. mysql-基本操作
  11. 通过Java 画一个太极图
  12. html 左侧固定导航栏,前端布局-固定导航栏与侧边栏
  13. Android Wear和二维码
  14. 交换机:简述对交换机工作原理的认识
  15. 计算机游戏设计的艺术(1)
  16. 数据库的用户信息表设计
  17. .Net neatupload上传控件实现文件上传的进度条
  18. MATLAB分段函数没有横线,关于matlab分段函数如何绘图问题
  19. 网络安全 - 信息收集
  20. python中paste函数的作用,python图片指定区域替换img.paste函数的使用

热门文章

  1. 互联网产品 从设计到运营 这中间提高需要关注的网站
  2. 怎么修改sqlserver用户密码_新版tplink路由器怎么修改管理员登录密码【修改方法】...
  3. sql server 2008 r2 产品密钥
  4. 阿里python开发规范手册_阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南...
  5. windows操作系统常见问题及解决
  6. Kafka 消费迟滞监控工具 Burrow
  7. 学习笔记。张飞硬件设计视频1到23
  8. 张飞老师硬件第八部视频整理——无刷电机知识点整理【入门】
  9. Ceph-rbd排错
  10. arthas监控服务和入门