C++语言程序设计教程 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 第4章 指针和引用.ppt

C++语言程序设计教程 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 第4章 指针和引用.ppt

ID:50318882

大小:214.50 KB

页数:37页

时间:2020-03-08

C++语言程序设计教程 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 第4章 指针和引用.ppt_第1页
C++语言程序设计教程 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 第4章 指针和引用.ppt_第2页
C++语言程序设计教程 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 第4章 指针和引用.ppt_第3页
C++语言程序设计教程 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 第4章 指针和引用.ppt_第4页
C++语言程序设计教程 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 第4章 指针和引用.ppt_第5页
资源描述:

《C++语言程序设计教程 普通高等教育十一五 国家级规划教材 教学课件 作者 吕凤翥 第4章 指针和引用.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、4.1指针和指针的定义格式4.2指针的运算4.3指针和数组4.4引用第4章指针和引用4.1指针和指针的定义格式4.1.1什么是指针指针是一种特殊的变量。指针的名字同标识符。指针的值是用来存放某个变量或对象的地址值的。指针的类型是该指针所指向的变量或对象的类型。一个指针存放了哪个变量或对象的地址值,则该指针就指向哪个变量或对象。总之,对指针的认识简单描述如下:指针是一种用来存放某个变量或对象地址值的变量;一个指针存放了哪个变量或对象的地址值,则该指针便指向哪个变量。指针的类型是该指针所指向的变量的类型。下面通过图示方法介绍指针与它所指向的变量

2、的关系。图4.14.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是一个指向一级指针的

3、指针,即为二级指针。见书中例4.1。4.2指针的运算指针在定义或说明时可以被赋初值,指针也可以被赋值。指针赋值的规则如下:指针被赋的值应该是变量或对象的地址值,并且要求类型相同、级别一致。4.2.1指针的赋值运算和增值运算1.指针的赋值运算在给指针赋值时除了要遵循上述规则外,还应注意如下事项。①指针定义后在没有确定值前绝对不能使用。②暂时不用的指针为了安全起见,可先给它赋值为0,即为一空指针。③可将一个已知指针赋值给相同类型的另一个指针。④指针可以使用malloc()函数赋值。例如,int*p;p=(int*)malloc(sizeof(i

4、nt));指针可以被加上或减去一个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++语言规定数组名是一个常量指针,该指针的值是该数组首

5、元素的地址值。假定一维数组a定义如下:inta[5];该数组的下标表示为a[i],i=0~4。该数组第i个数组元素的值表示为:*(a+i),其中,i=0~4。见书中例4.6。假定b是一个二维数组,定义如下:intb[3][5];该数组元素的下标表示为b[i][j],其中,i=0~2,j=0~4。二维数组元素用一级指针表示为:*(&b[0][0]+5*i+j)二维数组可以看作是由行数组和列数组组成的,行数组和列数组都是一维数组。2.二维数组元素的指针表示二维数组元素中行、列数组都用指针表示的形式如下:*(*(b+i)+j)当行数组用指针,列数

6、组用下标表示的形式如下:(*(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定义如下:intc[2][3][4];三维数组元素都用下标表示为c[i][j][k],其中,i=0~1,j=0~2,k=0~3三维数组元素都用指

7、针表示为*(*(*(c+i)+j)+k)3.三维数组元素的指针表示三维数组元素中二维用指针一维用下标表示为(*(*cc+i)+j)[k]*((*(c+i))[j]+k*(*(c[i]+j)+k)三维数组元素中一维用指针二维用下标表示为(*(c+i))[j][k](*(c[i]+j))[k]*(c[i][j]+k)还有一种是按三维数组在内存中存放顺序用数组的首地址表示如下:*(&c[0][0][0]+3*4*i+4*j+k)1.字符指针4.3.2字符指针和字符串处理函数字符指针是指向字符串的指针。字符指针指向字符串的首字符。由于字符指针名是变

8、量指针,要比字符数组名(常量指针)操作起来更加方便。字符数组只能在定义或说明时用字符串对它进行初始化,而字符指针不仅可用字符串对它进行初始化,而且还可以用字符串对它赋值。见书中例

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

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

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