C课件第14讲.ppt

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

第七章 指针 多维数组的指针 1.二维数组的存储结构与地址 设有一个三行四列的二维数组a定义如下。 int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 二维数组在内存中是按行顺序存储的,即第一维的下标变化慢,第二维的下标变化快。本例中a数组在计算机中的存储顺序如下。 a[0][0] → a[0][1] → a[0][2] → a[0][3] → a[1][0] → a[1][1] → a[1][2] → a[1][3] → a[2][0] → a[2][1] → a[2][2] → a[2][3] 在二维数组中,数组名a是指向元素a[0]的首地址。a+1是指向a[1]的地址,即第一行的地址。同理a+2是指向a[2]的地址,即第二行的地址。 则有 a ←→ a[0] 可推出 a[0] ←→ *a a+1 ←→ a[1] 可推出 a[1] ←→ *(a+1) a+2 ←→ a[2] 可推出 a[2] ←→ *(a+2) 一般说来,a+i就是指向第i行的地址,即a+i←→a[i] 二维数组的指针 (1)指向数组元素的指针变量 例7.9 将二维数组a按矩阵的形式输出。 ? main() { int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; int *p; p=a[0]; for(;pa[0]+12;p++) {if ((p-a[0])%4= =0) printf(\n); printf(%5d,*p); } printf(\n); } (2)指向二维数组行的指针变量 与二维数组名相对应,可以定义指向一个由n个元素所组成的数组的指针变量。定义的一般形式如下。 类型标识符 (*指针变量名)[数组元素个数] 例如: ? int a[3][4]; int (*p)[4]; p=a ; 例7.10 输出二维数组中任一行任一列的值。 ? main() { int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; int (*p)[4],i,j; p=a; printf(input i,j:\n); scanf(%d,%d,i,j); printf(a[%d][%d]=%d\n,i,j,*(*(p+i)+j)); } ? 程序运行结果如下。 ? input i,j: 1,3↙ a[1][3]=15 函数的指针和指向函数的指针变量 1.函数指针的概念 一个函数在编译时,被分配了一个入口地址,这个地址就称为该函数的指针。 可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。 2.指向函数的指针变量 (1)定义格式 函数类型 (*指针变量)( ); 注意:“*指针变量”外的括号不能缺,否则成了返回指针值的函数。 例如,int (*fp)(); /* fp为指向int函数的指针变量*/ (2)赋值 函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针变量赋值。 指向函数的指针变量=[]函数名; 注意:函数名后不能带括号和参数;函数名前的“”符号是可选的。 (3)调用格式 (*函数指针变量)([实参表]) 3.指向函数的指针变量作函数参数 指向函数的指针变量的常用用途之一,就是将函数指针作参数,传递到其它函数。 函数名作实参时,因为要缺省括号和参数,造成编译器无法判断它是一个变量还是一个函数,所以必须加以说明。 注意:对指向函数的指针变量,诸如p+i、p++/p--等运算是没有意义的。 int (*pf)( ); int add(int a,int b) { return a+b;} pf=add; Result=(*pf)(a,b); 返回指针值的函数 一个函数可以返回一个int型、float型、char型的数据,也可以返回一个指针类型的数据。 返回指针值的函数(简称指针函数)的定义格式如下: 函数类型 *函数名([形参表]) [案例] 某数理化三项竞赛训练组有3个人,找出其中至少有一项成绩不合格者。要求使用指针函数实现。 /*案例代码文件名:AL9_11.C*/ /********************************************************

文档评论(0)

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

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

1亿VIP精品文档

相关文档