欢迎来到天天文库
浏览记录
ID:49206269
大小:160.00 KB
页数:22页
时间:2020-02-01
《6指针与引用(3)_OK.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C++程序设计最重要的专业基础课程淮阴工学院计算机工程系主讲教师:于长辉6.3指针与函数函数参数可以是指针,将变量的地址传送到函数中。例如:voidswap(int*pa,int*pb){inttemp=*pa;*pa=*pb;*pb=temp;}调用swap函数,会影响到实参的值。例如:intx=5,y=10;swap(&x,&y);cout<2、仍然是函数参数的值传递的方式。因为在swap函数中创建的临时指针,在函数返回时被释放,它不能影响调用函数中的实参指针(即地址)值。6.3指针与函数例:输入a、b、c,按大小顺序输出。voidswap(int*pt1,int*pt2){ inttemp;temp=*pt1;*pt1=*pt2;*pt2=temp;}voidexchange(int*q1,int*q2,int*q3){if(*q1<*q2)swap(q1,q2);if(*q1<*q3)swap(q1,q3);if(*q2<*q3)swap(q2,q3);}voidmain(){ inta,b,c,*p1,*p2,3、*p3;cin>>a>>b>>c;p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);cout<*<函数名>(<形参>){<函数体>}其中:“*”说明函数返回一个指针;而该指针所指向数据类型由<类型>指定。注意4、:函数体中必须返回变量地址或指针变量;调用函数值只能赋给指针变量。二、指针作函数返回值——指针函数6.3指针与函数例:输入两个字符串,拼接后输出。char*stringcat(char*p1,char*p2){char*p=p1;将目标串首地址赋给指针变量pwhile(*p1++);指针p1移到s1的串尾p1--;while(*p1++=*p2++);将源串s2中的字符依次复制到目标串s1中returnp;返回指向目标串首地址的指针p}6.3指针与函数voidmain(){chars1[200],s2[100];cout<<"输入第一个字符串:";cin.getline(s1,15、00);cout<<"输入第二个字符串:";cin.getline(s2,100);cout<<"拼接后的字符串:";cout<6、loc!=-1){for(k=0;old[k];k++);for(j=loc,i=loc+k;source[i];j++,i++)source[j]=source[i];source[i]=NULL;}returnsource;}6.3指针与函数所谓函数指针,即函数的入口地址。格式:<类型>(*<变量名>)(<参数表>);其中:(*<变量名>)表示一个指针变量;(<参数表>)表示一个函数;两者结合表示该变量是函数指针变量。例如:float(*pf)(floatx);定义了一个名为pf的函数指针变量。三、指向函数的指针——函数指针6.3指针与函数函数指针变量的赋值:函数名赋给函数指7、针变量。例如:float(*pf)(float);//定义名为pf函数指针变量floatf(float);//定义名为f的实型函数pf=f;//将函数f()的入口地址赋给函数指针变量pf注意:只能将与函数指针变量具有同类型、同参数的函数名赋给函数指针变量。对函数指针变量进行赋值后,可用该指针变量调用函数。调用格式:(*<指针变量>)(<实参表>);或:<指针变量>(<实参表>);6.3指针与函数例:编写求一维数组元素最小值、平均值的函数。floatave(float*p,intn
2、仍然是函数参数的值传递的方式。因为在swap函数中创建的临时指针,在函数返回时被释放,它不能影响调用函数中的实参指针(即地址)值。6.3指针与函数例:输入a、b、c,按大小顺序输出。voidswap(int*pt1,int*pt2){ inttemp;temp=*pt1;*pt1=*pt2;*pt2=temp;}voidexchange(int*q1,int*q2,int*q3){if(*q1<*q2)swap(q1,q2);if(*q1<*q3)swap(q1,q3);if(*q2<*q3)swap(q2,q3);}voidmain(){ inta,b,c,*p1,*p2,
3、*p3;cin>>a>>b>>c;p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);cout<*<函数名>(<形参>){<函数体>}其中:“*”说明函数返回一个指针;而该指针所指向数据类型由<类型>指定。注意
4、:函数体中必须返回变量地址或指针变量;调用函数值只能赋给指针变量。二、指针作函数返回值——指针函数6.3指针与函数例:输入两个字符串,拼接后输出。char*stringcat(char*p1,char*p2){char*p=p1;将目标串首地址赋给指针变量pwhile(*p1++);指针p1移到s1的串尾p1--;while(*p1++=*p2++);将源串s2中的字符依次复制到目标串s1中returnp;返回指向目标串首地址的指针p}6.3指针与函数voidmain(){chars1[200],s2[100];cout<<"输入第一个字符串:";cin.getline(s1,1
5、00);cout<<"输入第二个字符串:";cin.getline(s2,100);cout<<"拼接后的字符串:";cout<6、loc!=-1){for(k=0;old[k];k++);for(j=loc,i=loc+k;source[i];j++,i++)source[j]=source[i];source[i]=NULL;}returnsource;}6.3指针与函数所谓函数指针,即函数的入口地址。格式:<类型>(*<变量名>)(<参数表>);其中:(*<变量名>)表示一个指针变量;(<参数表>)表示一个函数;两者结合表示该变量是函数指针变量。例如:float(*pf)(floatx);定义了一个名为pf的函数指针变量。三、指向函数的指针——函数指针6.3指针与函数函数指针变量的赋值:函数名赋给函数指7、针变量。例如:float(*pf)(float);//定义名为pf函数指针变量floatf(float);//定义名为f的实型函数pf=f;//将函数f()的入口地址赋给函数指针变量pf注意:只能将与函数指针变量具有同类型、同参数的函数名赋给函数指针变量。对函数指针变量进行赋值后,可用该指针变量调用函数。调用格式:(*<指针变量>)(<实参表>);或:<指针变量>(<实参表>);6.3指针与函数例:编写求一维数组元素最小值、平均值的函数。floatave(float*p,intn
6、loc!=-1){for(k=0;old[k];k++);for(j=loc,i=loc+k;source[i];j++,i++)source[j]=source[i];source[i]=NULL;}returnsource;}6.3指针与函数所谓函数指针,即函数的入口地址。格式:<类型>(*<变量名>)(<参数表>);其中:(*<变量名>)表示一个指针变量;(<参数表>)表示一个函数;两者结合表示该变量是函数指针变量。例如:float(*pf)(floatx);定义了一个名为pf的函数指针变量。三、指向函数的指针——函数指针6.3指针与函数函数指针变量的赋值:函数名赋给函数指
7、针变量。例如:float(*pf)(float);//定义名为pf函数指针变量floatf(float);//定义名为f的实型函数pf=f;//将函数f()的入口地址赋给函数指针变量pf注意:只能将与函数指针变量具有同类型、同参数的函数名赋给函数指针变量。对函数指针变量进行赋值后,可用该指针变量调用函数。调用格式:(*<指针变量>)(<实参表>);或:<指针变量>(<实参表>);6.3指针与函数例:编写求一维数组元素最小值、平均值的函数。floatave(float*p,intn
此文档下载收益归作者所有