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]



代码演示样例:

①指向数组元素:                                                            

    执行截图:

 
      



②指向数组

执行截图:

 
     





小结:

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

②指针的基本使用

③指针与一维数组

④指针与字符串

⑤指针与二维数组



 





C语言高速入门系列(五)的更多相关文章

  1. C语言高速入门系列(四)

    C语言高速入门系列(四) C语言数组 ---------转载请注明出处:coder-pig 贴心小提示:假设图看不清晰可右键另存为,应该就非常清晰了; 注意上面的代码都要自己过一遍哦! 本节引言: 经 ...

  2. C语言高速入门系列(二)

    C语言高速入门系列(二) -----转载请注明出处coder-pig 本节引言: 在前面一节中我们对C语言进行了初步的了解,学会了使用IDE进行代码的编写,编译执行! 在这一节中我们会对C语言的基本的 ...

  3. C语言高速入门系列(八)

    C语言高速入门系列(八) C语言位运算与文件 本章引言: 在不知不觉中我们的C高速入门系列已经慢慢地接近尾声了,而在这一节中,我们会对 C语言中的位运算和文件进行解析,相信这两章对于一些人来说是陌生的 ...

  4. C语言高速入门系列(一)

    C语言高速入门系列(一)  本系列引言: 本教程的宗旨是将C语言入门的内容进行关键知识点的提纯,将一些笼统的废话去除; 再进行压缩,然后将本章的关键知识点做成路线图的,能够更加方便地掌握学习的方向; ...

  5. C语言高速入口系列(七)

    C语言高速入口系列(七) C语言指针进阶 本章引言: 在前面第5节中我们对C语言的指针进行了初步的学习理解;作为C语言的灵魂, C指针肯定没那么简单,在这一节中,我们将会对指针进行进一步的学习,比方二 ...

  6. Swift语言高速入门

    Swift语言高速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

  7. Go语言入门系列(五)之指针和结构体的使用

    Go语言入门系列前面的文章: Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 Go语言入门系列(四)之map的使用 1. 指针 如果你使用过C或C++,那你肯定对指针这个概念 ...

  8. [SQL]SQL语言入门级教材_SQL语言快速入门(五)

    SQL语言快速入门(一) SQL是英文Structured Query Language的缩写,意思为结构化查询语言. SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按照ANSI(美国国家标 ...

  9. C语言程序设计入门学习五步曲(转发)

    笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手.发生这种现象的原因有三个: 一.所谓的看懂听明白,只是很肤浅的 ...

随机推荐

  1. BZOJ1009: [HNOI2008]GT考试(KMP+矩阵乘法)

    Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字.他的不吉利数学A1A2...Am(0< ...

  2. sqlite3-查看数据库

    在做android开发的时候,有时候我们需要查看系统下的数据库,这时候我们可以使用下面的方法 1.数据库存放位置 data/data/package/databases/abc.db 2.导出数据库 ...

  3. 大家好,我是FansUnion,雷文

    友情提示 以下是我在CSDN Code讨论组的自我介绍. 很多CSDN网友,总是重复地问我一些比较常见的问题. 我已经开始机械性地回答网友的问题了. 自我介绍 我的CSDN等媒体的ID,大多带有Fan ...

  4. Nginx分发服务

    nginx配置分发tomcat服务 http://blog.csdn.net/yan_chou/article/details/53265775 http://www.cnblogs.com/deng ...

  5. 洛谷 P3650 [USACO1.3]滑雪课程设计Ski Course Design

    P3650 [USACO1.3]滑雪课程设计Ski Course Design 题目描述 农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度 ...

  6. (三)unity4.6Ugui中文教程文档-------概要-UGUI Basic Layout

     大家好,我是孙广东.   转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unit ...

  7. CC2530定时器使用

     定时器学习   文件夹 说明 依据数据手冊可知CC2530总共同拥有4个定时器,可是定时器2被系统占用,可用的仅仅有三个,分别为定时器1/3/4 Timer在协议栈的代码位置为hal_timer ...

  8. javascript预解释中的机制

    预解释是一种毫无节操的机制(自从学了预解释,从此节操是路人) in:‘num’ in window 判断num是否为window这个对象的一个属性,是的话返回true,不是返回false 1.预解释的 ...

  9. CentOS下利用Docker部署Surging

    原文:CentOS下利用Docker部署Surging 1. 安装Centos, 配置固定ip配置文件地址vi /etc/sysconfig/network-scripts/ifcfg-ens33`` ...

  10. uva 10710 - Chinese Shuffle(完美洗牌)

    option=com_onlinejudge&Itemid=8&category=474&page=show_problem&problem=1651"> ...