文档详情

C语言程序设计基础讲解课件第6章(指针).ppt

发布:2019-02-20约2.63万字共79页下载文档
文本预览下载声明
char name[5][9]={“gain”,“much”,“stronger”, “point”,“bye”}; char *name[5]={“gain”,“much”,“stronger”, “point”,“bye”}; g a i n \0 s t r o n g e r \0 p o i n t \0 m u c h \0 name[0] name[1] name[2] name[3] name[4] b y e \0 g a i n \0 s t r o n g e r \0 p o i n t \0 m u c h \0 b y e \0 二维数组与指针数组区别: 二维数组存储空间固定 字符指针数组相当于可变列长的二维数组 指针数组元素的作用相当于二维数组的行名 但指针数组中元素是指针变量 二维数组的行名是地址常量 main() { int b[2][3],*pb[2]; int i,j; for(i=0;i2;i++) for(j=0;j3;j++) b[i][j]=(i+1)*(j+1); pb[0]=b[0]; pb[1]=b[1]; for(i=0;i2;i++) for(j=0;j3;j++,pb[i]++) printf(b[%d][%d]:%2d\n,i,j,*pb[i]); } 例 用指针数组处理二维数组 int *pb[2] pb[0] pb[1] int b[2][3] b[0][0] *pb[0] b[0][1] *(pb[0]+1) b[0][2] *(pb[0]+2) b[1][0] *pb[1] b[1][1] *(pb[1]+1) b[1][2] *(pb[1]+2) 1 2 3 2 4 6 6.5.2指向指针的指针 定义: 指向指针的指针 一级指针:指针变量中存放目标变量的地址 p1 p2 i 3 P2(指针变量) i(整型变量) 例 int **p1; int *p2; int i=3; p2=i; p1=p2; **p1=5; 二级指针:指针变量中存放一级指针变量的地址 例 int *p; int i=3; p=i; *p=5; i 3 P(指针变量) i(整型变量) 一级指针 单级间接寻址 二级指针 一级指针 目标变量 二级间接寻址 定义形式:[存储类型] 数据类型 **指针名; 如 char **p; 例 int i, **p; p=i; (?)//p是二级指针, 不能用变量地址为其赋值 指针本身的存储类型 最终目标变量的数据类型 *p是p间接指向对象的地址 **p是p间接指向对象的值 例 int i=3; int *p1; int **p2; p1=i; p2=p1; **p=5; i p1 p2 3 i p1 **p2, *p1 *p2 2000 2008 200A 2002 2004 2006 1 2 变量a 变量b (main) 指针变量p 2000 指针变量q 2002 例 一级指针与二级指针 #include stdio.h void swap(int *r,int *s) { int *t; t=r; r=s; s=t; } main() { int a=1,b=2,*p,*q; p=a; q=b; swap(p,q); printf(%d,%d\n,*p,*q); } 2002 2000 COPY 指针变量s 指针变量r (swap) 指针变量t 2000 2002 2000 2000 2008 200A 2002 2004 2006 1 2 变量a 变量b (main) 指针变量p 2000 指针变量q 2002 例 一级指针与二级指针 #include stdio.h void swap(int *r,int *s) { int *t; t=r; r=s; s=t; } main() { int a=1,b=2,*p,*q
显示全部
相似文档