高级语言程序设计-第14讲 指针三.pptVIP

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级语言程序设计 计算机基础教研室 第14讲 指针 (三) 内容提要 指针数组应用; 指向数组的指针与指针数组的区别 带参数的main函数; 动态内存分配函数及其应用; 一维、二维动态数组的实现 指针与二维数组 C语言将二维数组看作一维数组,其每个数组元素又是一个一维数组 按行顺序存放所有元素 关于行地址和列地址 在二维数组中定义中,二维数组名a是0行地址 此时的一维数组元素a[0]、a[1]并不是具体的整型元素,而是第二层一维数组的数组名,因此是该行0列地址,而用a[0]、a[1]转为元素地址 下列形式均表示第i行地址: a+i, a[i] 当i为0时a与a[0]等价 下列形式均表示第i行第0列地址: *(a+i), a[i], a[i][0] 下列形式均表示元素a[i][j]的地址: *(a+i)+j, a[i]+j, a[i][j] 用二维字符数组操作多个字符串例7.8: 查星期表输出序号 任意输入英文的星期几,查表后输出其对应的数字。 char weekDay[7][10] = {Sunday, Monday, Tuesday,Wednesday, Thursday, Friday, Saturday}; 例7.8 #include stdio.h #include string.h main( ) { int i, pos; int findFlag = 0; /*0表示未找到 */ char x[10]; char weekDay[][10] = {“Sunday”,“Monday”,“Tuesday”, /*用二维数组 */ Wednesday,Thursday,Friday, Saturday}; printf(Please enter a string:); scanf(%s, x); for (i=0; i 7 !findFlag; i++) /*注意两个循环条件同时满足*/ { if (strcmp(x, weekDay[i]) == 0) /*找到相等串*/ { pos = i; /*记下序号*/ findFlag = 1; /* 1表示找到*/ } } if (findFlag) /* findFlag= =1,找到则输出序号*/ printf(%s is %d\n, x, pos); else /*所代表的条件是:i==7并且findFlag= =0,表示未找到*/ printf(Not found!\n); } 二维数组中的行列指针 a 代表二维数组的首地址,第0行的地址 a+i 代表第i行的地址 *(a+i) 即 a[i] 代表第i行第0列的地址 *(a+i)+j 即 a[i]+j 代表第i行第j列的地址 *(*(a+i)+j ) 即 a[i][j] 代表第i行第j列的元素 二维数组的行指针 二维数组的行指针定义方法 类型关键字 (*行指针名)[常量名]; 例:int a[2][3],(*p)[3]; p = a; /*用行地址初始化 */ 先逐行查找元素所在行 再在行内逐列查找元素所在位置 下面例子是用行指针依次输出二维数组中所有元素,其中p+1则使p指针向下移动一行int型数据占用的字节数,此例中为3*sizeof(int) for (i=0; im; i++) for (j=0; jn; j++) printf(%d,*(*(p+i)+j)); 二维数组的列指针 二维数组的列指针——普通的一级指针 int a[2][3],*p; p = *a; /*用列地址初始化 */ 逐个元素查找元素所在位置 相对于数组起始地址的偏移量 i*n+j /*这里的n指二维数组的列数 */ 列指针+1,向下移动sizeof(基类型)字节 下面例子是用列指针依次输出二维数组中所有元素,其中p+1则使p指针向下移动sizeof(int) 个字节 for (i=0; im; i++) for (j=0; jn; j++) printf(%d,*(p+i*n+j)); 二维数组列指针作形式参数 二维数组列指针在作为形式参数时,适合于二维数组的行数和列数需要根据参数动态控制的应用场合。 例7.9,编写一个计算任意m行n列二维数组中元素的最大值,并指出其行列下标值的函数FindMax。主函数中利用FindMax计算3

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档