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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 地址和指针 8.1 变量的地址和指针 8.2 指针变量的定义和指针变量的基类型 8.3 给指针变量赋值 8.4 对指针变量的操作 8.5 函数之间地址值的传递 考试的重点 8.1 变量的地址和指针 计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个 编号,这个编号就成为内存地址。 内存空间 地址 1010 1011 1012 1013 1014 1015 1016 : : : : 1200 1201 1202 1203 1204 1205 例如:short a,b; float x; a=3;b=5;x=3.5; : : : : 2002 2003 2004 2005 a b x 3 5 3.5 每个变量的地址是指该变量所占 存储单元的第一个字节的地址。 在C语言中,我们可以定义整型变量、实型变量、字符变量。 他们都是用来存放数据的。 今天,我们来学习一下特殊的变量,这种变量只是用来存放 内存地址的。 比如我们定义了一个指针变量p p 占4个字节 该变量中只能存放内存地址,比如把变量a的地址赋予指针 变量p,则指针变量p的值为1012。 1012 请问 当访问变量a时,访问的是什么? 当访问指针变量p时,访问的是什么? 3 1012 当访问变量时,为“直接存取(直接访问)”。 我们也可以通过指针变量间接的访问该地址中原来的值。此时 称为“间接存取(间接访问)”。 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的基类型为double类型,在指针变量pd中,只能存放double类型变量的地址。 s1和s2的基类型为char类型,在指针变量s1和s2中,只能存放char类型变量的地址。 8.3 给指针变量赋值 8.3.1 给指针变量赋地址值 例如:int k,*q,*p; /*k为整型变量,q和p都是指针变量。*/ q p k k=1; /*给普通变量赋值*/ 整型变量k只被能赋予整型值,赋值时直接赋值就可以 了,而指针变量只能被赋予地址值,如下是把整型变 量k的地址赋值给指针变量q。 q=k; 是用来求出变量的地址。 1 k 知识点: 由于把变量k的地址赋予了指针变量q,q中现在存放的就是变量k的地址, 这时可以说:q指向了变量k。 指针变量之间也可以进行赋值:p=q; k 当我们输出变量k,q,p时,输出的结果为; 1 1245052 1245052 8.3 给指针变量赋值 8.3.2 给指针变量赋“空”值 除了给指针变量赋地址值之外,还可以给指针变量赋一个特殊的值,该值为“空”值。 int *p; p=NULL; int *p; p=0; int *p; p=‘\0’; 注意 此时,指针变量p中不是没有值,而是有一个“空”值。 8.4 对指针变量的操作 8.4.1 通过指针来引用一个存储单元 #include stdio.h main() {int k,*q,*p; k=1; q=k; p=q; printf(“%d\n%d\n%d\n,k,q,p); } 1 1245052 1245052 输出时,变量k为1,而指针变量q和p则为变量k的地址。 #include stdio.h main() {int k,*q,*p; k=1; q=k; p=q; printf(“%d\n%d\n%d\n,k,*q,*p); } 1 k k q k p 1 1 1 访问时,在指针变量前在*(间接访问运算符)则 表示访问该地址中原来的值。 8.4 对指针变量的操作 8.4.1 通过指针来引用一个存储单元 假定有以下定义和语句: int *p,i=10,j; p=i; j=*p; /*定义了三个变量*/ /*取变量i的地址赋给指针变量p*/ /*间接访问指针变量中的值10赋给变量j*/ p 10 i j 10 j=i; 间接访问运算符*是一个单目运算符,必须出现在运算对象的左边。其运算对象 可以是存放地址的指针变量,也可以是地址。 j=*(i); j=*i; 扩展知识: j=*p+1; 10 j 11 j in

文档评论(0)

清风老月 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳春市惠兴图文设计有限公司
IP属地广东
统一社会信用代码/组织机构代码
91441781MA53BEWA2D

1亿VIP精品文档

相关文档