计算机二级C语言程序设计第9讲.ppt

计算机二级C语言程序设计第9讲.ppt

ID:52395205

大小:317.06 KB

页数:58页

时间:2020-04-05

计算机二级C语言程序设计第9讲.ppt_第1页
计算机二级C语言程序设计第9讲.ppt_第2页
计算机二级C语言程序设计第9讲.ppt_第3页
计算机二级C语言程序设计第9讲.ppt_第4页
计算机二级C语言程序设计第9讲.ppt_第5页
资源描述:

《计算机二级C语言程序设计第9讲.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9讲指针指针是C语言中的重要概念,也是C语言的重要特色。使用指针,可以使程序更加简洁、紧凑、高效。9.1指针和指针变量的概念9.2指针变量的定义与应用9.3数组的指针和指向数组的指针变量9.4字符串的指针和指向字符串的指针变量9.5返回指针值的函数9.6指针数组与主函数main()的形参9.7函数的指针和指向函数的指针变量9.1指针和指针变量的概念1.内存地址──内存中存储单元的编号1)计算机硬件系统的内存储器中,拥有大量的存储单元(容量为1字节)。为了方便管理,必须为每一个存储单元编号,这个编号就是存储单元的“地址”。每个存储单元都有一个惟一的地址。2)在地

2、址所标识的存储单元中存放数据。注意:内存单元的地址与内存单元中的数据是两个完全不同的概念。例:inta;a=12;变量a内的“内容”(变量值)是12;变量值可由键盘等方法录入a变量的地址&a,是3000,变量的地址&a是编译时系统统一编码赋予的。123000a图9-12.变量地址──系统分配给变量的内存单元的起始地址假设有这样一个程序:main(){intnum;scanf("%d",&num);printf("num=%d",num);}C编译程序编译到该变量定义语句时,将变量num登录到“符号表”中。符号表的关键属性有两个:一是“标识符名(id)”,二是

3、该标识符在内存空间中的“地址(addr)”。为描述方便,假设系统分配给变量num的4字节存储单元为3000至3003,则起始地址3000就是变量num在内存中的地址。3.变量值的存取──通过变量在内存中的地址进行系统执行“scanf(”%d“,&num);”和“printf(”num=%d“,num);”时,存取变量num值的方式可以有两种:(1)直接访问──直接利用变量的地址进行存取1)上例中scanf(“%d”,&num)的执行过程是这样的:用变量名num作为索引值,检索符号表,找到变量num的起始地址3000;然后将键盘输入的值(假设为12)送到内存单

4、元3000至3003中。此时,变量num在内存中的地址和值,如图9-1所示。2)printf("num=%d",num)的执行过程,与scanf()很相似:首先找到变量num的起始地址3000,然后从3000至3003中取出其值,最后将它输出。(2)间接访问──通过另一变量访问该变量的值C语言规定:在程序中可以定义一种特殊的变量(称为指针变量),用来存放其它变量的地址。例如,假设定义了这样一个指针变量p,它被分配到4000至4003单元,其值可通过赋值语句“p=#”得到。此时,指针变量p的值就是变量num在内存中的起始地址3000,如图9-2所示(见

5、下一页)。通过指针变量p存取变量num值的过程如下:首先找到指针变量p的地址(4000),取出其值3000(正好是变量num的起始地址);然后从3000至3003中取出变量num的值(3)。(3)两种访问方式的比较两种访问方式之间的关系,可以用某人甲(系统)要找某人乙(变量)来类比。一种情况是,甲知道乙在何处,直接去找乙就是(即直接访问)。另一种情况是,甲不知道乙在哪,但丙(指针变量)知道,此时甲可以这么做:先找丙,从丙处获得乙的地址,然后再找乙(即间接访问)。main(){intnum=12;int*p;/*p是专门用于存放其他变量(num)地址的变量,(存放

6、整型变量地址)*/p=#/*p是变量,专门存放整形变量地址(这里不要写成“*p”)*/scanf(“%d”,p);scanf(“%d”,&num);printf(“%d”,*p);printf(“%d”,num);}运行结果:12(对应scanf(“%d”,p);)12(scanf(“%d”,&num);)12(printf(“%d”,num);)12(printf(“%d”,*p);)p=#num的首地址是3000,将num地址装入了指针变量p40004003300012pnum30003003图9-2p=#num的首地

7、址是3000p指向了(首地址为3000)变量num4.指针与指针变量(1)指针──即地址(指针变量的值,称为指针,这个值是其他变量的地址)一个变量的地址称为该变量的指针。通过变量的指针能够找到该变量。(2)指针变量──专门用于存储其它变量地址的变量指针变量p的值就是变量num的地址。指针与指针变量的区别/关系,就是变量值与变量(名)的区别/关系。(3)为表示指针变量和它指向的变量之间的关系,用指针运算符“*”表示。例如,指针变量p与它所指向的变量num的关系,(在上例中)表示为:*p,即*p等价于变量num。而p等价于变量&num因此,下面两个语句(num=3;

8、*p=3;)的作用相同:

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

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

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