C言语教程之函数指针变量与指针函数的差异(下篇) |
您所在的位置:网站首页 › 函数指针与指针函数的区别 › C言语教程之函数指针变量与指针函数的差异(下篇) |
C言语教程之函数指针变量与指针函数的差异(下篇) 2020年9月17日 10:31 阅读(122) C语言教程之函数指针变量与指针函数的区别(下篇)-z=(*pfun)(x,y); //调用函数指针变量,实参x和y的值传递给形参a和b printf(“max=%dn”,z); //形参a和b的值发生交换存储在max函数存储区,因为pfun指针变量指向函数max首地址 /********************************************************************************************* 留意:函数指针变量与指针函数的差异: 函数指针:指向函数的指针变量 指针函数:回来指针也便是地址的函数他们侧重点不一样 **********************************************************************************************/
//函数指针变量 #if 0 int max(int a,int b) { if( a 》 b ) return a; else return b; } void main(void) { int x,y,z; int ( *pfun )(int,int); //界说函数指针变量 ser_init(); printf(“input two numbers:n”); scanf(“%d%d”,&x,&y); pfun = max; //把函数名(函数进口地址)赋给函数指针变量 z=(*pfun)(x,y); //调用函数指针变量,实参x和y的值传递给形参a和b printf(“max=%dn”,z); //形参a和b的值产生交流存储在max函数存储区,由于pfun指针变量指向函数max首地址 } //所以z获得max函数的最大值 #endif //-------------------------------------------------------------------------------------------- #if 0 //回来指针的函数,函数回来值为地址 char *day(int n) { staTIc char *weekday[ ]={ //指针数组由指针元素组成 “Illegal day”, “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, “Sunday” }; if( n《0||n》6) return weekday[0] ; //回来指针元素也便是地址 else return weekday[n]; } void main(void) { while(1) { if(!bflag) { int i; // char *day(int n); //指针函数声明 ser_init(); printf(“input No.:n”); scanf(“%d”,&i); printf(“Num=%d---》Day=%sn”,i,day(i)); bflag = 1; } } } #endif //--------------------------------------------------------------------------------- #if 0 void main(void) { char string[]=“I love you!”; //字符数组拜访字符串 ser_init(); printf(“string = %s”,string); } void main(void) { char *string=“I love you! my baby”; //字符指针变量拜访字符串 ser_init(); printf(“string = %s”,string); } #endif //--------------------------------------------------------------------------------- #if 0 //挑选法排序(由小到大排序) void SelectSort(char *name[],int n) //形参指针数组---由指向字符的指针元素组成 { int i,j,k; //k为中心变量,暂存下标号 char *ps; //中心指针变量,暂存值 for(i=0;i { // x0 x1 x2 x3 。。.x(n-1) x(n) k = i; //从下标0开端挑选一个数,然后在后边的序列里比较, //如果有小于前面的那个数就交流下标号 for(j=i+1;j { if(strcmp(name[k],name[j])》0 ) k=j; } if(k!=i) { //后边序列有大于前面那个数 ps=name[i]; //name[]中的元素为指针地址 name[i]=name[k]; name[k]=ps; } } } void print(char *name[],int n) { int i; for(i=0;i} void main(void) { while(1) { if(!bflag) { int n; staTIc char *name[]={“CHINA”,“AMERICAN”,“ENGLANGD”,“JANPANESE”,“GERMANY”,“FRANCE”,“AUSTRALIAN”}; //界说指针数组:数组中的每个元素为一个指针 n=7; ser_init(); SelectSort(name,n); //指针数组的首地址传递给形参变量 print(name,n); printf(“%c”,*name[0]); bflag = 1; } } } #endif //---------------------------------------------------------------------------------------- #if 0 //挑选法排序(由小到大排序) void SelectSort(int *name[],int n) //形参指针数组---由指向字符的指针元素组成 { int i,j,k; //k为中心变量,暂存下标号 int *ps; //中心指针变量,暂存值 for(i=0;i { // x0 x1 x2 x3 。。.x(n-1) x(n) k = i; //从下标0开端挑选一个数,然后在后边的序列里比较, //如果有小于前面的那个数就交流下标号 for(j=i+1;j { // if( strcmp(name[k],name[j]) 》 0 ) k=j; } if(k!=i) { //后边序列有大于前面那个数 ps=name[i]; //name[]中的元素为指针地址 name[i]=name[k]; name[k]=ps; } } } void print(int *name[],int n) { int i; for(i=0;i} void main(void) { while(1) { if(!bflag) { int n; staTIc int *name[]={11,22,33,44,55,66}; //name[0]=0xaa; //name[1]=0xbb; //name[2]=0xcc; //name[3]=0xdd; //name[4]=0xee; //name[5]=0xff; //界说指针数组:数组中的每个元素为一个指针 n=20; ser_init(); SelectSort(name,n); //指针数组的首地址传递给形参变量 print(name,n); bflag = 1; } } } #endif //--------------------------------------------------------------------------------------- #if 0 //指向指针变量的指针变量 void main(void) { while(1) { if(!bflag) { int x,*p,**pp; //pp为 指向整型的指针变量 的指针变量 ser_init(); printf(“input one number:n”); scanf(“%d”,&x); p=&x; // p=&x; pp=&p; // q=&x; printf(“%dn”,*p); //变量x的值 printf(“%dn”,**pp); //变量x的值 bflag=1; } } } #endif 声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除([email protected])https://www.86ic.net/bandaoti/102167.html 2赞 标签:下篇 函数 区别 变量 指针 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |