- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【 5.1.4 与对象有关的指针】 声明一个指针来保存对象的地址,这个指针就是指向对象的指针,简称对象的指针。 C++语言提供了另一个更常用的方法: 例 5-4 (续) (续) this指针也是一个指向对象的指针,它隐含在类成员函数中,用来指向成员函数所属类的正在被操作的对象。 例 5-5 (续) (续) 例 5-6 (续) 例 5-7 例 5-12 例 5-17 例 5-16 int matrix[2][3]={{1,2,3},{4,5,6}}; int i,j; int *p; cout″原矩阵:″endl; for(i=0;i2;i++) { for(j=0;j3;j++) cout″\t\t″matrix[i][j]; coutendl; } p=transpose(matrix); cout″转置矩阵:″endl; for(i=0;i3;i++) { for(j=0;j2;j++) cout″\t\t″*(p+i*2+j); coutendl; } return 0; } int *transpose(const int (*p1)[3]) 返回指针的函数 { int i,j; int (*p2)[2]; p2=new int[3][2]; for(i=0;i3;i++) for(j=0;j2;j++) p2[i][j]=p1[j][i]; return p2[0]; } 函数名是一个指向函数首地址的指针常量。可以声明一个指向函数的指 针,并使用该指针来调用函数。指向函数的指针通常简称为函数指针。 声明的一般形式如下: 数据类型 (*指针名)(参数表); 指函数返回值的类型,参数表中的内容应与指针所指向的函数的形参表相同。 【 5.4.3 函数指针】 比如: int (*pfun)(int,int); 声明的函数指针可以指向一个函数的首地址,该函数的返回值类型和形参表都必须与上述声明中指定的相同。 赋值的一般方法如下: 函数指针名=函数名 使用函数指针时,必须先赋值。 函数指针 #includeiostream.h void add(double x,double y); void sub(double x,double y); void mul(double x,double y); void div(double x,double y); 函数名所代表的函数必须是函数指针可以指向的。 声明了指针pfun。该指针可以指向返回值为int型,有两个int型参数的函数。 int main() { void (*pfun)(double,double); //声明函数指针 double x,y; char choice; cout请输入两个操作数:; cinxy; coutendl; cout请输入运算符:(+ or - or * or /); cinchoice; coutendl; if(choice==′+′) pfun=add; //指针指向函数add else if(choice==′-′) pfun=sub; //指针指向函数sub else if(choice==′*′) pfun=mul; //指针指向函数mul else if(choice==′/′) pfun=div; //指针指向函数div else {cout″The input is error!″; return 1; } pfun(x,y)
文档评论(0)