- 1、本文档共90页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#include iostream using namespace std; struct Date { int month,day,year; }; Date birthdays[]={{12,17,37},{10,31,38},{6,24,40}, {11,23,42},{8,5,44}}; const Date getdate(int n) { return birthdays[n-1]; } 6.5.7 const引用 【例6-28】const引用应用举例。 int main() { int dt=99; while(dt!=0) { cout endl”Enter date # (1-5, 0 to quit):”; cin dt; if (dt0 dt6) { const Date bd=getdate(dt); coutbd.month‘/’bd.day‘/’bd.yearendl; } } return 0; } 运行情况如下: Enter date # (1-5, 0 to quit):1 12/17/37 Enter date # (1-5, 0 to quit):2 10/31/38 Enter date # (1-5, 0 to quit):3 6/24/40 Enter date # (1-5, 0 to quit):4 11/23/42 Enter date # (1-5, 0 to quit):5 8/5/44 Enter date # (1-5, 0 to quit):0 * * * * * 6.3.2 用函数指针调用函数 函数指针的定义形式: 数据类型 (* 函数指针变量名)(); 其中“*函数指针变量名”必须用圆括号括起来。在定义中“(*函数指针变量名)”右侧的括号“( )”表示指针变量所指向的目标是一个函数,不能省略;“数据类型”用于定义指针变量所指向的函数的类型。 * */82 1. 函数指针的定义和赋值 6.3.2 用函数指针调用函数 说明: 通过改变指针变量的内容,一个指针变量可以先后指向同类型的不同函数,实现对不同函数的调用。 和数据指针一样,程序中不能使用指向不定的函数指针。 在给函数指针赋值时,只须给出函数名而不必给出参数 * */82 1. 函数指针的定义和赋值 6.3.2 用函数指针调用函数 用函数指针变量调用函数的一般形式为: (* 函数指针变量名)(实参表); 其中“*函数指针变量名”必须用圆括号括起来,表示间接调用指针变量所指向的函数;右侧括号中为传递到被调用函数的实参。 * */82 2. 函数指针的使用 例如,若有函数int f1(int x,int y) 和int f2(char ch),则: int (*fs)( ); fs=f1; /* fs指向函数f1( ) */ x=(*fs)(a,b); /* 相当于x=f1(a,b); */ fs=f2; /* 改变fs内容,使fs指向函数f2( ) */ y=(*fs)(str); /* 相当于y=f2(str); */ 6.3.2 用函数指针调用函数 运用函数指针变量调用函数时应注意的问题: 函数指针变量中应存有被调函数的首地址; 调用时“*函数指针变量名”必须用圆括号括起来,表示对函数指针做间接存取运算。它的作用等价于用函数名调用函数,此外实参表也应与函数的形参表一一对应。 * */82 2. 函数指针的使用 6.3.2 用函数指针调用函数 * */82 2. 函数指针的使用 【例6.18】用指向函数的指针调用函数以求二维数组中全部元素之和。 int main( ) { int arr_add(int arr[],int n); int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p,total1,total2; int (*pt)(int*,int); /*定义一个指向函数的指针*/ pt=arr_add; p=a[0]; total1=arr_add(p,12); /*用原函数名调用函数*/ total2=(*pt)(p,12); /*用指向函数的指针调用函数,将函数入口地址赋给指针*/ couttotal=total1endl; couttotal2=total2endl; return 0; } arr_add(int arr[ ],int n ) { int i,sum=0; for(i=
文档评论(0)