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的一维字符型数组的指针变量。
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。