C語言中函數(shù)指針與普通指針沒什么差別,只是指向的內(nèi)容不同而已。主要作用:

創(chuàng)新互聯(lián)擁有10多年成都網(wǎng)站建設(shè)工作經(jīng)驗,為各大企業(yè)提供網(wǎng)站設(shè)計制作、網(wǎng)站建設(shè)服務,對于網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、成都App制作、wap網(wǎng)站建設(shè)(手機版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、國際域名空間等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)絡營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等網(wǎng)站化運作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項目的能力。
1、實現(xiàn)面向?qū)ο缶幊讨械亩鄳B(tài)性。
2、回調(diào)函數(shù)。
函數(shù)指針是指向函數(shù)的指針變量。 因此“函數(shù)指針”本身首先應是指針變量,只不過該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。
C在編譯時,每一個函數(shù)都有一個入口地址,該入口地址就是函數(shù)指針所指向的地址。有了指向函數(shù)的指針變量后,可用該指針變量調(diào)用函數(shù),就如同用指針變量可引用其他類型變量一樣,在這些概念上是大體一致的。
函數(shù)指針有兩個用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。
#include
stdio.h
void
main()
{
int
max(int
,int
);
int
(*p)(int
,int);
p=max;
//此處利用
p=max是正確的指向函數(shù)的指針的用法,p指向max的入口地址
//此處用*p=max得到相同結(jié)論,為什么呢?因為你這樣賦值之后*p的內(nèi)容就是max
//所以在執(zhí)行(*p)(q,w)它時其實是執(zhí)行的(max)(q,w),如果是p=max此時執(zhí)行(*p)(q,w)是等價于執(zhí)行max(q,w)。
int
q,w;
printf("please
input
the
two
numbers:\n");
scanf("%d%d",q,w);
printf("the
larger
number
is:%d",(*p)(q,w));
}
////////////////////////////////////
int
max(int
a,int
b)
{
if(ab)
return
a;
else
return
b;
}
c語言中叫做回調(diào)函數(shù),將函數(shù)指針(如max)作為函數(shù)的參數(shù),函數(shù)(如fun)中調(diào)用這個參數(shù)指向的函數(shù),
調(diào)用函數(shù)(fun)時看情況而給函數(shù)傳入不同的函數(shù)指針
例如fun(a,b,min),那么fun函數(shù)調(diào)用執(zhí)行三個參數(shù)就調(diào)用min函數(shù)
參數(shù)的定義要與傳入的函數(shù)指針相匹配
例如fun(int,x,int y,(*p)(int,int)) 那么調(diào)用fun(a,b,min)時,min的參數(shù)必須是(int ,int)
#include?stdio.h
#include?stdlib.h
#include?string.h
void?virtualFun(int?choice,?int?n,?char?*str[],?char?*(*p)(int?,?char?**));
char?*maxs(int?n,?char?*s[]);??//此函數(shù)通過指向函數(shù)的指針調(diào)用
char?*mins(int?n,?char?*s[]);??//此函數(shù)通過指向函數(shù)的指針調(diào)用
char?*minc(int?n,char?*s[]);???//此函數(shù)通過指向函數(shù)的指針調(diào)用
void?Menu();
char?*(*func)(int?n,?char?**);
int?main()?{
char?*name[]={"FOLLOW?ME","BASIC","GREAT?WALL?","FORTRAN","COMPUTER?DESIGN"};
int?n=5;
char?ch=0;
while?(ch!=4)?{
Menu();
ch?=?getchar();
getchar();//ignore?'\n'
ch?=?ch?-?'0';
virtualFun(ch,?n,?name,?func);
}
return?0;
}
void?virtualFun(int?choice,?int?n,?char?*str[],?char?*(*p)(int?n,?char?**name))?{
switch(choice)?{
case?1:?//max?string
p?=?maxs;
break;
case?2:
p?=?mins;
break;
case?3:
p?=?minc;
printf("[result?is?:%c]\n",?*p(n,?str));?//because?the?return?is?a?char
default:
return;
}
printf("[result?is?:%s]\n",?p(n,?str));
}
char?*maxs(int?n,?char?*s[])?{
int?i;
char?*max?=?s[0];
for?(i=1;in;i++)?{
if?(strcmp(max,?s[i])0)
max?=?s[i];
}
return?max;
}
char?*mins(int?n,?char?*s[])?{
int?i;
char?*min?=?s[0];
for?(i=1;in;i++)?{
if?(strcmp(min,?s[i])0)
min?=?s[i];
}
return?min;
}
char?*minc(int?n,?char?*s[])?{
int?i;
char?ch?=?s[0][0],?*p,?*r=s[0];
for?(i=0;in;i++)?{
p?=?s[i];
while(*p++)?{
if?(*p0x20??ch*p)?{
ch?=?*p;
r?=?p;
}
}
}
return?r;
}
void?Menu()?{
char?menu[]?=?"1??max?string\n\
2??min?string\n\
3??min?char?\n\
4??exit\n";
printf("%s",?menu);
}
選B
f是一個變量,不是函數(shù)名字,所以不選D
int* f;這樣才是指向int類型的指針,所以A錯
當前題目:c語言指向函數(shù)指針,C語言的指針
文章分享:http://chinadenli.net/article25/dsggcci.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、虛擬主機、品牌網(wǎng)站建設(shè)、電子商務
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)