9.3 地址参与运算-高二《新概念C语言能力教程》同步教学课件 (电工版2020)

2023-06-12
| 20页
| 80人阅读
| 0人下载
精品

内容正文:

第9章 指针 第9章 指针 指针变量 野指针与空指针 指针变量作形参 指针作函数的返回值 地址参与运算 指针与一维数组 一维数组作形参 指针与二维数组++ 指向指针类型的指针 main函数和命令行参数 指向函数的指针变量 使用堆空间 典型命题 地址参与运算 这节课我们讨论地址可以参与的运算。 3 地址参与运算 如图指针变量pi指向了整型变量i,怎样理解pi + 1? pi的值是地址&i,加1之后也是一个地址。对于指针变量及值为地址的表达式,通常只强调值标识了哪个存储单元,不关心具体的值是几。 pi + 1的值为与pi指向的存储单元相邻的下一个同类型存储单元的地址,即pi + 1指向了与变量i相邻的下一个整型存储单元。 变量i属于程序,但与其相邻的下一个整型存储单元不一定属于程序,因此,表达式pi+1的值通常没有意义。 如图指针变量pi指向了整型变量i,怎样理解pi + 1? pi的值是地址&i,加1之后也是一个地址。对于指针变量及值为地址的表达式, 通常只强调值标识了哪个存储单元,不关心具体的值是几。因此,pi+1中1是指一个同类型存储单元的字节数。 若pi指向的是字符型地址,则1是1个字节;若pi指向的是int型地址,则1是4个字节。 pi + 1的值为与pi指向的存储单元相邻的下一个同类型存储单元的地址,即pi + 1指向了与变量i相邻的下一个整型存储单元。 变量i属于程序,但与其相邻的下一个整型存储单元不一定属于程序,因此,表达式pi+1的值通常没有意义。 4 例9-9 分析程序。数组元素的存储单元是相邻的 p指向了a[0] p+1指向? a[1] *(p+1)就是a[1] p+i指向了a[i]。 *(p+i)就是a[i]。 多个相邻的同类型存储单元且属于程序的,可以想到的是数组元素。 程序中定义一个长度为3的一维double型数组,一个double型指针变量。 当p赋值为&a[0]后,p指向了a[0],p + 1指向与a[0]相邻的下一个同类型存储单元,即a[1]。 *(p + 1)就是a[1] p+i指向了a[i]。*(p + i)就是a[i] 5 指针变量的减法 指针变量也可以减去一个整数。p – 1指向了与指针变量p指向的存储单元相邻的上一个同类型存储单元。 两个同类型的指针变量可以相减,结果为整数,表明两个指针变量指向的同类型存储单元之间的位置关系。两指针变量指向同一个数组的元素时,才有实际意义。 p = p + 1;同样可简写为p += 1;或++p;、p++;。p = p – 1;与此类似。 指针变量也可以减去一个整数。p – 1指向了与指针变量p指向的存储单元相邻的上一个同类型存储单元。 两个同类型的指针变量可以相减,结果为整数,表明两个指针变量指向的同类型存储单元之间的位置关系。 两指针变量指向同一个数组的元素时,才有实际意义。 p = p + 1;同样可简写为p += 1;或++p;、p++;。p = p – 1;与此类似。 6 其它运算 两个同类型的指针变量可以进行等于(==)或不等于(!=)比较运算,如果两个指针变量的值相等,就表示它们指向了同一个存储单元。 两个同类型的指针变量还可以进行>、<、>=和<=等关系运算。通过比较两个地址的大小,可以确定两个存储单元的相对位置。 两指针变量指向同一个数组的元素时,关系操作才有实际意义。 两个同类型的指针变量可以进行等于(==)或不等于(!=)比较运算,如果两个指针变量的值相等,就表示它们指向了同一个存储单元。 两个同类型的指针变量还可以进行>、<、>=和<=等关系运算。通过比较两个地址的大小,可以确定两个存储单元的相对位置。 两指针变量指向同一个数组的元素时,关系操作才有实际意义。 7 分析语句 char (*p)[5]; 去掉语句char (*p)[5];中关键字char,表达式(*p)[5]的求值顺序为((*p)[5]),先执行括号操作符中的*p,因此,原语句定义了一个指针变量p。 定义中的剩余部分char [5]说明了指针变量所指向存储单元的类型,即长度为5的一维字符型数组, char (*p)[5]; 定义了一个可以指向长度为5的一维字符型数组的指针变量。 char *p1;定义了一个字符型指针变量。 *p1是字符型变量,*p是长度为5的一维字符型数组。 去掉语句char (*p)[5];中关键字char,表达式(*p)[5]的求值顺序为((*p)[5]),括号操作符与下标操作符的优先级相同,左结合 先执行括号操作符中的*p,因此,原语句定义了一个指针变量p。 定义中的剩余部分char [5]说明了指针变量所指向存储单元的类型,即长度为5的一维字符型数组, char (*p)[5]; 定义了一个可以指向长度为5的一维字符型数组的指针变量。

资源预览图

9.3 地址参与运算-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
1
9.3 地址参与运算-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
2
9.3 地址参与运算-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
3
9.3 地址参与运算-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
4
9.3 地址参与运算-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
5
9.3 地址参与运算-高二《新概念C语言能力教程》同步教学课件 (电工版2020)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。