- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言学习05
C语言程序设计 第5章 指 针 本章主要内容 ? 指针的概念 ? 指针的基本运算 ? 指针与一维数组 ? 指针与二维数组 ? 指针与字符串 ? 指针数组 5.1 指针的概念及运算 指针是一种数据类型。 指针是指存放数据的内存地址。程序中定义的变量、数组都要分配内存空间,通过这些空间的地址可以访问存储在其中的数据,也就是引用变量或数组元素。可以看出,指针提供了访问数据的另一种方法(通过变量名访问数据是一种)。 5.1.1 指针的概念 “指针”是个地址概念,是指内存储器中存储单元的地址。变量在内存中使用存储空间的起始地址,称为该变量的指针,如图所示。 5.1.1 指针的概念 在下图中,变量p存储的是变量a的地址,这种存储地址的变量称为指针变量。此时,访问存储单元2001和2002 (分配给变量a使用)的方法有两种:一种是通过变量a直接访问,另一种是通过指向变量a的指针变量p间接访问。 5.1.1 指针的概念 1.按变量地址存取变量值的方式称为“直接访问”方式 5.1.1 指针的概念 5.1.1 指针的概念 5.1.2 指针变量的定义和初始化 5.1.2 指针变量的定义和初始化 指针变量定义的一般形式为: 数据类型 *标识符; 定义标识符是一个指针变量,数据类型是指针变量可指向数据的类型,可以是int、char、float等基本类型,也可以是数组等构造类型。标识符前面的星号(*)表明标识符是一个指针变量。 如: float *pi,*pj; 定义了两个实型的指针变量,并为它们各分配2字节的存储单元。注意:“*”表示其后的变量是指针变量,而不是指针变量名的一部分。 5.1.2 指针变量的定义和初始化 例如: int a,*pi; /*定义整型变量a和指针变量pi*/ float x,*pf; /*定义实型变量x和指针变量pf*/ char ch,*pc;/*定义字符变量ch和指针变量pc*/ 指针变量定义后,允许指向的数据的类型就确定了,当指针变量指向这种类型的变量时,就可以使用指针变量访问该变量。 5.1.2 指针变量的定义和初始化 所谓指向是指指针变量(如指针变量p)中存储了另外一个变量(如整型变量a)的地址,如图所示: 5.1.2 指针变量的定义和初始化 5.1.3 与指针有关的运算 1.取地址运算和间接访问运算 ⑴ 取地址运算符,运算对象是变量,其作用获得变量在存储器中的首地址。 ⑵ * 指针运算符(间接访问运算符),运算对象是指针,其作用是访问指针变量指向的变量(的内存空间)。 例如: int a=3,b,*p; p=a; /*将整型变量的地址赋值给指针变量p*/ b=*p; /* *p就是指针变量p指向的变量 */ 当将一个变量(如变量a)的地址(a)赋值给指针变量(如指针变量p) 时,指针变量指向了该变量。如下图所示: 5.1.3 与指针有关的运算 5.1.3 与指针有关的运算 例5-1 分析下面程序的输出 void main() { int a,b,*p1,*p2; a=10;b=20; p1=a; /*指针变量p1指向变量a*/ p2=b; /*指针变量p2指向变量b*/ printf(%d,%d\n,*p1,*p2); p1=b; p2=a; /*p1,p2的指向发生变化*/ printf(%d,%d\n,*p1,*p2); } 5.1.3 与指针有关的运算 2.指针的赋值运算 例如: char c,*pc; int i,*pi1,*pi2; float f,*pf; pc=c; pi=i; pi2=pi1; pf=f; 为指针变量赋值时,要注意地址的含义。如,指向整型数据的指针变量只能赋予整型数据的地址,反过来说,使用指向整型数据的指针变量只能访问整型数据。 5.1.3 与指针有关的运算 另外,可以将空指针NULL赋值给指针变量,但不可以将一个常量赋值给指针变量。例如: int *p1,*p2; p1=NULL; (正确) p2=123; (错误) 3 .指针的算术运算 当指针(变量)指向数组的元素时,指针(变量)允许进行下面的算术运算: ① ++(自增)、--(自减) ② 加、减整型数据 ③ 两个指针相减 5.1.3 与指针有关的运算 int arr[10],*p,*q; p=arr[0]; q=p+9 p++;q--; q-p (分析: q-p的含义) 4. 指针(变量)的关系运算 指针的关系运算即比较指针(地址)大小的运算。两个
文档评论(0)