C语言全国计算机二级等级考试教程d第八章地址和指针(章节带习题).ppt

C语言全国计算机二级等级考试教程d第八章地址和指针(章节带习题).ppt

ID:53609335

大小:545.00 KB

页数:19页

时间:2020-04-20

C语言全国计算机二级等级考试教程d第八章地址和指针(章节带习题).ppt_第1页
C语言全国计算机二级等级考试教程d第八章地址和指针(章节带习题).ppt_第2页
C语言全国计算机二级等级考试教程d第八章地址和指针(章节带习题).ppt_第3页
C语言全国计算机二级等级考试教程d第八章地址和指针(章节带习题).ppt_第4页
C语言全国计算机二级等级考试教程d第八章地址和指针(章节带习题).ppt_第5页
资源描述:

《C语言全国计算机二级等级考试教程d第八章地址和指针(章节带习题).ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第8章地址和指针8.1变量的地址和指针8.2指针变量的定义和指针变量的基类型8.3给指针变量赋值8.4对指针变量的操作8.5函数之间地址值的传递考试的重点8.1变量的地址和指针计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就成为内存地址。内存空间地址1010101110121013101410151016::::120012011202120312041205例如:shorta,b;floatx;a=3;b=5;x=3.5;::::2002200320042005abx3

2、53.5每个变量的地址是指该变量所占存储单元的第一个字节的地址。在C语言中,我们可以定义整型变量、实型变量、字符变量。他们都是用来存放数据的。今天,我们来学习一下特殊的变量,这种变量只是用来存放内存地址的。比如我们定义了一个指针变量pp占4个字节该变量中只能存放内存地址,比如把变量a的地址赋予指针变量p,则指针变量p的值为1012。1012请问当访问变量a时,访问的是什么?当访问指针变量p时,访问的是什么?31012当访问变量时,为“直接存取(直接访问)”。我们也可以通过指针变量间接的访问该地址中原来的值

3、。此时称为“间接存取(间接访问)”。8.2指针变量的定义和指针变量的基类型定义指针变量的一般形式如下:类型名*指针变量名;或类型名*指针变量名1,*指针变量名2,……;例如:int*pi;int*pj,*pa;1.pi,pj,pa都是变量,不过都是指针变量,定义时在普通变量名的左边加上星号就行了。说明:pi,pj,pa三个指针变量的类型为整型,说明三个变量中只能存放int类型变量的地址。这时我们称int是指针变量pi,pj,pa的基类型。如:double*pd;char*s1,*s2;pd的基类型为dou

4、ble类型,在指针变量pd中,只能存放double类型变量的地址。s1和s2的基类型为char类型,在指针变量s1和s2中,只能存放char类型变量的地址。8.3给指针变量赋值8.3.1给指针变量赋地址值例如:intk,*q,*p;/*k为整型变量,q和p都是指针变量。*/qpkk=1;/*给普通变量赋值*/整型变量k只被能赋予整型值,赋值时直接赋值就可以了,而指针变量只能被赋予地址值,如下是把整型变量k的地址赋值给指针变量q。q=&k;&是用来求出变量的地址。1&k知识点:由于把变量k的地址赋予了指针变

5、量q,q中现在存放的就是变量k的地址,这时可以说:q指向了变量k。指针变量之间也可以进行赋值:p=q;&k当我们输出变量k,q,p时,输出的结果为;1124505212450528.3给指针变量赋值8.3.2给指针变量赋“空”值除了给指针变量赋地址值之外,还可以给指针变量赋一个特殊的值,该值为“空”值。int*p;p=NULL;int*p;p=0;int*p;p=‘’;注意此时,指针变量p中不是没有值,而是有一个“空”值。8.4对指针变量的操作8.4.1通过指针来引用一个存储单元#include

6、dio.h>main(){intk,*q,*p;k=1;q=&k;p=q;printf(“%d%d%d",k,q,p);}112450521245052输出时,变量k为1,而指针变量q和p则为变量k的地址。#includemain(){intk,*q,*p;k=1;q=&k;p=q;printf(“%d%d%d",k,*q,*p);}1k&kq&kp111访问时,在指针变量前在*(间接访问运算符)则表示访问该地址中原来的值。8.4对指针变量的操作8.4.1通过指针

7、来引用一个存储单元假定有以下定义和语句:int*p,i=10,j;p=&i;j=*p;/*定义了三个变量*//*取变量i的地址赋给指针变量p*//*间接访问指针变量中的值10赋给变量j*/p10ij10j=i;间接访问运算符*是一个单目运算符,必须出现在运算对象的左边。其运算对象可以是存放地址的指针变量,也可以是地址。j=*(&i);j=*&i;扩展知识:j=*p+1;10j11jint*p,k=0;p=&k;pk*p=100;1000k=100;*p=*p+1;k=k+1;101*p+=1;或++*p;

8、或(*p)++;k+=1;或++k;或k++;若有以下定义和语句:int**p,*s,k=20;s=&k;p=&s;ps20k8.4对指针变量的操作8.4.1通过指针来引用一个存储单元程序举例:例8.1用指针指向两个变量,通过指针运算选出值最小的那个数。#includemain(){inta,b,min,*pa,*pb,*pmin;pa=&a;pb=&b;pmin=&min;scanf(“%d%d”,pa,p

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

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

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