c语言第08章指针

c语言第08章指针

ID:39963424

大小:397.50 KB

页数:70页

时间:2019-07-16

c语言第08章指针_第1页
c语言第08章指针_第2页
c语言第08章指针_第3页
c语言第08章指针_第4页
c语言第08章指针_第5页
资源描述:

《c语言第08章指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章指针目录8.1指针的概念8.2指针变量的定 义和引用8.3指针与一维数组8.4指针与字符串8.5指针与多维数组8.6指针数组与指向 指针的指针8.7返回指针值的函数8.8指向函数的指针8.9动态内存分配8.10本章程序举例本章要点小结本章结束8.1指针的概念指针是C语言的一个重要概念,也是C语言的一个重要特色。深刻理解和正确使用指针是学习本章的基本要求。本章是一个难点,也是一个重点,初学者不易掌握。在理解和熟悉基本内容的前提下,上机实验是必不可少的环节。8.1指针的概念一、地址在计算机中,把内存区划分为一个一个的存储单元,每个单元

2、为一个字节(8位),它们都有一个编号,这个编号就是内存地址。如下图所示:注意:1、程序中定义的每个数据在编译后都占有各自的内存区。2、数据所占有的存储单元个数是由其类型决定的。3、首地址:第1个单元的地址4、表示地址的数与整数的区别8.1指针的概念二、举例如有定义:charc=‘A’;inta=3;则所占内存情况如下:注意:c和a的地址可能相邻,也可能不相邻,是由系统分配的,我们不用关心。8.1指针的概念三、指针与指针变量1、指针:简单地说,指针就是地址。二者是同一个概念的两种说法。只不过指针更形象一些,就像一个针一样,可以指向某个地方

3、。2、指针变量:首先指针变量就是一个变量,和我们以前所讲的其它变量没有本质区别。不同之处在于这种变量中所存放的内容是地址。什么是指针变量呢?我们回忆一下什么叫整型变量打个比方8.1指针的概念四、直接访问和间接访问有两个上锁且放着物品的盒子A、B,如果你有A盒子的钥匙,则可以直接打开A盒子将物品取出;如果你有B盒子的钥匙,而A盒子的钥匙在B盒子中,要想取出A盒子中的物品,则必须先打开B盒子,取出A盒子的钥匙,再打开A盒子将物品取出。上面两种情况就是直接访问和间接访问的概念。8.1指针的概念1、直接访问通过变量本身对变量进行存取的方式,称为

4、直接访问。如定义:intx;则x=10;x+=5;等等这种访问方式只需要变量本身就得到了该变量的全部信息,不需要其它内容,是直接的。8.1指针的概念2、间接访问通过指针变量实现对变量的访问方式,称为间接访问。首先要定义一个指针变量,然后将一个同类型变量的地址赋给该指针变量(这时我们称指针变量指向该变量),这样就可以进行间接访问了。间接访问的过程是:由指针变量得到变量的地址,根据该地址找到变量的存储区,再对该存储区的内容进行存取,从而实现了对变量的间接访问。8.2指针变量的定义和引用一、指针变量的定义和赋值1、格式:类型名*指针变量名;2

5、、举例int*p1;char*s1,*s2;float*a1,*a2,f;3、说明a.类型名:指针变量所指向的变量类型。b.*是定义指针变量的标志,不可丢掉。c.指针变量定义后,其值是不确定的。8.2指针变量的定义和引用4、赋值:可以进行初始化,也可以使用赋值语句(1)、初始化:inta,*s=&a;(2)、赋值语句inta,*s;s=&a;(3)、注意:只能用同类型变量的地址进行赋值!如定义:int*s;floatf;则s=&f;是非法的。不定8.2指针变量的定义和引用在分析有关指针的程序时,画图是很好的方法:若有:inta,*s;则

6、sa若有:inta=5,*s=&a;则不定5&a8.2指针变量的定义和引用二、指针变量的引用1、两个运算符:&与*&:取地址,注意与作位运算符时的不同(双目)*:取内容,注意与作乘运算符时的不同(双目)2、说明a.&既可作用于一般变量,也可作用于指针变量b.*只能作用于指针变量c.定义指针变量时的*与该处的含义不同8.2指针变量的定义和引用3、指针变量可以进行的操作(1)赋值:inta,*p1=&a,*p2;p2=p1;(2)输出:printf(“%x”,p1);(3)增减:p1++;p2--;p1+=4;(只能和一个整数)(4)取内容

7、:*p1=5;a=5;printf(“%d”,*p1);(5)比较:与指针常量NULL进行比较,两指针变量 值的大小比较无意义。表示空指针,即不指向任何单元,在头文件stdio.h中定义。8.2指针变量的定义和引用例8.1#include main() {inta1=11,a2=22;int*p1,*p2; p1=&a1; p2=&a2;printf(“%d,%d”,*p1,*p2); p2=p1;printf(“%d,%d”,*p1,*p2); }举例p1&a11122a1p2a2&a2*p1*p2&a18

8、.2指针变量的定义和引用例8.2#include main() {inta1=11,a2=22;int*p1,*p2,*p; p1=&a1; p2=&a2;printf(“%d,%d”

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。