第五章 C语言程序设计 指针课件.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 C语言程序设计 指针课件

p是一个指针变量,它指向一个指向整型数据的指针变量 int **p; p为指向函数的指针,该函数返回一个整型值 int (*p)(); p为带回一个指针的函数,该指针指向整型数据 int *p(); f为带回整型函数值的函数 int f(); p为指向含n个元素的一维数组的指针变量 int (*p)[n]; 定义指针数组p,它由n个指向整型数据的指针元素组成 int *p[n]; 定义整型数组a,它有n个元素 int a[n]; p为指向整型数据的指针变量 int*p; 定义整型变量i int i; 含义 定义 有关指针的数据类型的小结 5.8 用于动态内存分配的函数 5.5.2 二维数组与指针 用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素。但在概念上和使用上,多维数组的指针比一维数组的指针要复杂一些。 1. 二维数组元素的地址 先回顾一下多维数组的性质,可以认为二维数组是“数组的数组”,例 : 定义int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 则二维数组a是由3个一维数组所组成的。设二维数组的首行的首地址为2000 ,则 表 示 形 式 含义 地 址 a 二维数组名,指向一维数组a[0],即0行首地址 2000 a[0], *(a+0), *a 0行0列元素地址 2000 a+1,a[1] 1行首地址 2008 a[1],*(a+1) 1行0列元素a[1][0]的地址 2008 a[1]+2, *(a+1)+2, a[1][2] 1行2列元素a[1][2] 的地址 2012 *(a[1]+2), *(*(a+1)+2), a[1][2] 1行2列元素a[1][2]的值 元素值为13 int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 2 . 指向多维数组元素的指针变量 在了解上面的概念后,可以用指针变量指向多维数组的元素。 (1) 指向数组元素的指针变量 例: 用指针变量输出二维数组元素的值 #include stdio.h void main() { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};   int*p;   for(p=a[0];p<a[0]+12;p++) {if((p-a[0])%4==0) printf(″\n″);   printf(″%4d″,*p); } }   (2) 指向由m个元素组成的一维数组的指针变量 例10.13 出二维数组任一行任一列元素的值 #include stdio.h void main ( ) { int a[3][4]={1,3,5,7,9,11, 13,15,17,19,21,23};  int (*p)[4],i,j; p=a;  scanf(″ i=%d,j=%d″,&i,&j); printf(″a[%d,%d]=%d\n″,i, j,*(*(p+i)+j)); } 运行情况如下: i=1,j=2↙(本行为键盘输入) a[1,2]=13 行指针 5.5.3 通过行指针变量引用二维数组元素 指针 指针变量 行指针变量(指向一维数组的指针):指向由N个元素组成的一维数组的指针变量 定义一般形式: 类型标识符 (*行指针变量名)[常量表达式] 例: int (*ip)[4],a[3][4]; ip=a; 表明了指向的一维数组元素的个数 思考:用IP如何去访问二维数组?? 5.5.3 通过行指针变量引用二维数组元素 问题:用IP如何去访问二维数组a? 1、ip访问a的第i行 ip+i 2、 ip访问a的第i行第j列 ip[i][j] a+i 第i行第j列元素的地址 第i行第j列的元素 (*(p+i))[j] (*(p+i))[j] *(p+i)+j *(*(p+i)+j) p[i]+j *(p[i]+j) p[i][j] P[i][j] 5.5.3 通过行指针变量引用二维数组元素 例:输入输出一个二维数 1、使用下标 #includestdio.h #define N 3 #define M 4 Void main() { int I,j,a[N][M]; for(i=0;iN;i++) for(j=0;jM;j++) scanf(“%d,a[i][j]); for(i=0;iN;i++)

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档