《指针数组.ppt》由会员分享,可在线阅读,更多相关《指针数组.ppt(22页珍藏版)》请在三一文库上搜索。
1、指针数组的元素类型是指针 指针数组的元素存放对象的地址,指针数组,说明形式为: 类型 * 标识符 表达式 ;,例如: int * pi 3 ; float * pf 5 ; char * ps 10 ;,/数组元素是关联类型为整型的指针,/数组元素是关联类型为浮点型的指针,/数组元素是关联类型为字符型的指针,/ 例测试指针数组 #include void main() int a = 11 , b = 22 , c = 33 , * pi 3 ; pi 0 = ,指针数组,1 指向基本数据类型的指针数组,/ 例 测试指针数组 #include void main() int a = 11 ,
2、b = 22 , c = 33 , * pi 3 ; pi 0 = ,指针数组,1 指向基本数据类型的指针数组,/ 例4-6 测试指针数组 #include void main() int a = 11 , b = 22 , c = 33 , * pi 3 ; pi 0 = ,&a &b &c,*pi0 *pi1 *pi2,指针数组,1 指向基本数据类型的指针数组,/ 例4-6 测试指针数组 #include void main() int a = 11 , b = 22 , c = 33 , * pi 3 ; pi 0 = ,&a &b &c,*pi0 *pi1 *pi2,11 22 33,
3、指针数组,1 指向基本数据类型的指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,指针数组,2 指向数组的指针数组,指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0
4、= ,pf 是长度为3的数组,2 指向数组的指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,数组元素是指针,指针数组,2 指向数组的指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 )
5、2 ; pf 0 = ,指针的关联类型 是长度为2的浮点数组 double 2,指针数组,2 指向数组的指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,取对象地址,指针数组,2 指向数组的指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5
6、.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,(1)访问数组元素,i = 0 , pf i = &aa,指针数组,2 指向数组的指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,(2)访问对象,i = 0 , pf i = &aa,*pf i = aa,指针数组,2 指向数组的指针数组,/ 例 #include void main() doub
7、le aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,(3)地址偏移,&aa1,i = 0 , pf i = &aa,*pf i = aa,j =1 , *pf i +1 = aa+1,指针数组,2 指向数组的指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3
8、) 2 ; pf 0 = ,(4)访问对象,i = 0 , pf i = &aa,*pf i = aa,j =1 , *pf i +1 = aa+1,*(*pf i +j) = *(aa+j) = aaj,指针数组,2 指向数组的指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,讨论 aa 与 &aa aa 是一维数组名,内存直接地址,指针数组,2 指向数组的指针数组,aa 不
9、是存储在指针变量的值 &aa 返回一个指针,该指针指向数组 是个二级指针,/ 测试aa 与 ,讨论 aa 与 &aa aa 是一维数组名,内存直接地址,aa 不是存储在指针变量的值 &aa 返回一个指针,该指针指向数组 是个二级指针,指针数组,2 指向数组的指针数组,讨论 aa 与 &aa aa 是一维数组名,内存直接地址,pf 数组元素指向一维数组 元素类型是二级指针 aa 是一级指针 pf 0 = & aa 逻辑上同级指针操作,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double
10、cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,二级指针,指针数组,2 指向数组的指针数组,aa 不是存储在指针变量的值 &aa 返回一个指针,该指针指向数组 是个二级指针,aa 不是存储在指针变量的值 &aa 返回一个指针,该指针指向数组 是个二级指针,讨论 aa 与 &aa aa 是一维数组名,内存直接地址,pf 数组元素指向一维数组 元素类型是二级指针 aa 是一级指针 pf 0 = & aa 逻辑上同级指针操作,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 =
11、3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,pf 0 = aa ;,error C2440: = : cannot convert from double 2 to double (*)2,修改,指针数组,2 指向数组的指针数组,aa 不是存储在指针变量的值 &aa 返回一个指针,该指针指向数组 是个二级指针,讨论 aa 与 &aa aa 是一维数组名,内存直接地址,pf 数组元素指向一维数组 元素类型是二级指针 aa 是一级指针 pf 0 = & aa 逻辑上同级指针操作,/ 例 #include voi
12、d main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,pf 0 = aa ;,error C2440: = : cannot convert from double 2 to double (*)2,指针数组,2 指向数组的指针数组,aa 不是存储在指针变量的值 &aa 返回一个指针,该指针指向数组 是个二级指针,讨论 aa 与 &aa aa 是一维数组名,内存直接地址,pf 数组元素指向一维数组 元素类型是二级指针 aa
13、 是一级指针 pf 0 = & aa 逻辑上同级指针操作,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,pf 0 = aa ;,error C2440: = : cannot convert from double 2 to double (*)2,指针数组,2 指向数组的指针数组,/ 例 #include void main() double aa 2 = 1.1, 2.2 ; d
14、ouble bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = ,typedef double aryType 2 ; aryType aa = 1.1, 2.2 ; aryType bb = 3.3, 4.4 ; aryType cc = 5.5, 6.6 ; aryType * pf 3 ;,定义数组类型 double 2,指针数组,2 指向数组的指针数组,#include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = /错误 ,一些补充说明,#include void main() double aa 2 = 1.1, 2.2 ; double bb 2 = 3.3, 4.4 ; double cc 2 = 5.5, 6.6 ; double ( * pf 3 ) 2 ; pf 0 = /错误 ,int j = 0; for (; j 3 ; j + ),