C语言高速入门系列(五)



C语言指针初涉



                                          ------转载请注明出处:coder-pig



本节引言:

上一节我们对C语言复合数据类型中的数组进行了解析,在本节中,我们会对C语言复合数据类型中的

重点,C语言的灵魂-----指针进行学习!使用指针的优点:利用指针能够表示与使用复杂的数据结构;

更加方便地使用我们的数组与字符串;能够像汇编语言一样直接处理内存单元地址;能够动态地进行内存空间

分配,C语言指针是重点,同一时候也是C中的难点,就让大家尾随笔者的脚步,对C中的指针进行剖析把!

本节学习路线图:









指针概念,指针与一维数组与字符串:







指针与二维数组:



该知识点是指针的难点,事实上要弄懂这里的话,我们仅仅要把重心放到二维数组上,对二维数组进行彻底的理解!

step 1:二维数组是按行与列存储数据的;我们能够看成若干行 + 每行若干列的一维数组组成

int a[3][4] ={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
  能够看成三行,每行有四个一维数组



step 2:a代表二维数组首元素的地址,即&a[0],假设换行数组的第二,三行的话,仅仅须要:a
+ 1,a+2这样;等于 &a[1],&a[2]



step 3:我们能够把a[0]看做是指向a[0][0]的指针,那么a[0]+1则指向a[0][1],即此时的地址为&a[0][1]

ps: 这里的+1的1是数组元素所占的字节数,比方int a[]的话,那么这个+1代表的就是向后移动4个字节,指向的就是下一元素;

假设是+2的话就是后移8个字节,所以a[i][2] = a[i] + 2



step 4:通过前面一维数组的学习,我们能够知道 a[i] 与 *(a+i)等价

相同的,我们扩展到二维数组的情况  a[i][j] 与*(a+i)+j 和a[i]+j是等价的,都是表示a[i][j]的地址

而求a[i][j]的值:  *(a[i]+j)  与*(*(a+i)+j)都是能够的



注意:*a 与*(a+i)都不代表不论什么详细的数组元素,所以当你们引用他们的时候可能会引起错误哦!



①数组首地址a[0]: a   不能够直接引用!!!

②一维数组a[0]首元的地址(&a[0][0]):   a[0],*(a+0),*a;

③第一行的首地址: a + 1   相同不能够直接应用

④一维数组a[1]首元的地址(&a[1][1]):    a[1],*(a + 1)

⑤序号为2行4列元素a[2][4]的地址:a[2]+4,*(a+2)+4,a[2][4]



代码演示样例:

①指向数组元素:                                                            

    执行截图:

 
      



②指向数组

执行截图:

 
     





小结:

①指针的概念,指针变量,直接訪问与间接訪问

②指针的基本使用

③指针与一维数组

④指针与字符串

⑤指针与二维数组



 





最新文章

  1. The user specified as a definer ('root'@'%') does not exist 异常解决
  2. 【Android群英传】学习笔记(三·一)
  3. *POJ 1222 高斯消元
  4. *HDU 1757 矩阵乘法
  5. MySQL HASH分区
  6. 【Gym 100015B】Ball Painting
  7. 关于网络连接方式的总结(HostOnly,NAT....)
  8. Delphi 获取进程路径及命令行参数
  9. maven依赖缺少oracle驱动包
  10. js一些通用方法的封装
  11. jQuery UI 之 LigerUI 快速入门
  12. 您在基于 Windows 7 的或基于 Windows Server 2008 R2 的计算机上读取器中插入智能卡时出现错误消息:"设备驱动程序软件未能成功安装"
  13. Vue 部署IIS 单页面刷新报404问题
  14. CentOS 7中允许远程连接mariadb数据库
  15. Find them, Catch them POJ - 1703
  16. flask 定义数据库关系(多对多)
  17. 查看mysql版本
  18. 20165304《JAVA程序设计》第四周学习总结
  19. Unity 3D连接MySQl数据库
  20. Ubuntu python-opcua Test

热门文章

  1. Loadrunner经典测试实例
  2. 洛谷——P3817 小A的糖果
  3. Jszip的使用和打包下载图片
  4. vue 自定义modal 模态框组件
  5. Java 学习(17): Java 泛型
  6. RMAN-03002、RMAN-06059
  7. MWPhotoBrowser 属性详解 和代理解释
  8. 判断Bigdecimal类型是否等于0的方法
  9. AS2.0鼠标尾随和拖动代码
  10. JSF教程(11)——生命周期之Invoke Application Phase