第4章 指针和引用.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 指针和引用

* * 4.1 指针和指针的定义格式 4.2 指针的运算 4.3 指针和数组 4.4 引用 第4章 指针和引用 4.1 指针和指针的定义格式 4.1.1 什么是指针 指针是一种特殊的变量。 指针的名字同标识符。 指针的值是用来存放某个变量或对象的地址值的。 指针的类型是该指针所指向的变量或对象的类型。一个指针存放了哪个变量或对象的地址值,则该指针就指向哪个变量或对象。 总之,对指针的认识简单描述如下: 指针是一种用来存放某个变量或对象地址值的变量;一个指针存放了哪个变量或对象的地址值,则该指针便指向哪个变量。指针的类型是该指针所指向的变量的类型。 下面通过图示方法介绍指针与它所指向的变量的关系。 图4.1 4.1.2 指针的定义格式 指针的定义格式如下: 类型 * 指针名 [=初值]; 下面列举一些常用的不同类型的指针的定义格式。 double *pd; // pd是一个指向double型 变量的指针 char *pc; // pc是一个指向char型变量的指针 float *pfl; // pfl是一个指向float型变量的指针 int (*pa)[3];// pa是一个指向一维数组的指针,该数组是具有3个元素的int型数组。 int (*pfu)(); // pfu是一个指向函数的指针,该函数是一个无参数的int型函数。 int **pp; // pp是一个指向一级指针的指针,即为二级指针。 见书中例4.1。 4.2 指针的运算 指针在定义或说明时可以被赋初值,指针也可以被赋值。 指针赋值的规则如下: 指针被赋的值应该是变量或对象的地址值,并且要求类型相同、级别一致。 4.2.1 指针的赋值运算和增值运算  1.指针的赋值运算 在给指针赋值时除了要遵循上述规则外,还应注意如下事项。 ① 指针定义后在没有确定值前绝对不能使用。 ② 暂时不用的指针为了安全起见,可先给它赋值为0,即为一空指针。 ③ 可将一个已知指针赋值给相同类型的另一个指针。 ④ 指针可以使用malloc()函数赋值。例如, int *p; p = (int*)malloc(sizeof(int)); 指针可以被加上或减去一个int型数,包括加1或减1运算。 见书中例4.2,例4.3。 2.指针的增值减值运算 在一定条件下,两个指针可以进行比较,也可以进行相减运算。 见书中例4.4。 4.2.2 指针的比较运算和相减运算 指针运算实际上是地址运算,但是指针运算又不同于地址运算。 指针加1不同于地址加1。因为指针加1实际上所加的地址值不一定是1,而是该指针的类型所占内存的字节数。 见书中例4.5。 4.2.3 指针运算和地址运算 4.3 指针和数组 4.3.1 指针可表示数组元素 1.一维数组元素的指针表示 C++语言规定数组名是一个常量指针, 该指针的值是该数组首元素的地址值。 假定一维数组a定义如下: int a[5]; 该数组的下标表示为a[i],i=0~4。 该数组第i个数组元素的值表示为: *(a+i), 其中,i=0~4。 见书中例4.6。 假定b是一个二维数组,定义如下: int b[3] [5]; 该数组元素的下标表示为b[i][j],其中,i=0~2,j=0~4。 二维数组元素用一级指针表示为: *(b[0][0]+5*i+j) 二维数组可以看作是由行数组和列数组组成的,行数组和列数组都是一维数组。 2.二维数组元素的指针表示 二维数组元素中行、列数组都用指针表示的形式如下: *(*(b+i)+j) 当行数组用指针,列数组用下标表示的形式如下: (*(a+i))[j] 当行数组用下标,列数组用指针表示的形式如下: *(a[i]+j) 二维数组元素的地址值表示有如下几种形式: b[i][j], b[i]+j, *(b+i)+j, b[0]+5*i+j, (*(b+i))[j] 二维数组的行地址表示有如下几种形式: a+i, a[i] 二维数组的行地址是一个二级指针的地址值,它的值就是该行首列元素的地址值。 见书中例4.7。 假定三维数组c定义如下: int c[2]

文档评论(0)

xyz118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档