當前位置:首頁 » 編程語言 » c語言指向函數的指針的指針

c語言指向函數的指針的指針

發布時間: 2022-09-09 18:30:44

c語言指向函數的指針 求翻譯

#include<stdio.h>
intf1(int(*f)(int));//函數指針
intf2(inti);
intmain(void)
{
printf("Answer:%d ",f1(f2));//指向f2
return0;
}
intf1(int(*f)(int))//定義函數指針
{
intn=0;
while((*f)(n))n++;//回調函數,當指針不是NULL時,代入n
return0;
}
intf2(inti)
{
returni*i+i-12;
}
//也就是每個函數入口都是一個地址
//函數無它,唯指令集合而已,上面只是換個地址執行指令而已

⑵ C語言——指向函數的指針

c語言中叫做回調函數,將函數指針(如max)作為函數的參數,函數(如fun)中調用這個參數指向的函數,
調用函數(fun)時看情況而給函數傳入不同的函數指針
例如fun(a,b,min),那麼fun函數調用執行三個參數就調用min函數
參數的定義要與傳入的函數指針相匹配
例如fun(int,x,int y,(*p)(int,int)) 那麼調用fun(a,b,min)時,min的參數必須是(int ,int)

⑶ C語言指向函數的指針問題

int (*p1)(int, int);

⑷ c語言 指向返回指針的函數的指針的寫法

你的陳述不太全,缺返回的指針指向的類型。寫法如下:
char *(*p)(int,int);//聲明p是指向一個具有兩個int型形參的函數,函數返回一個char *型指針。

⑸ C語言指向函數指針問題

#include
<stdio.h>
void
main()
{
int
max(int
,int
);
int
(*p)(int
,int);
p=max;
//此處利用
p=max是正確的指向函數的指針的用法,p指向max的入口地址
//此處用*p=max得到相同結論,為什麼呢?因為你這樣賦值之後*p的內容就是max
//所以在執行(*p)(q,w)它時其實是執行的(max)(q,w),如果是p=max此時執行(*p)(q,w)是等價於執行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(a>b)
return
a;
else
return
b;
}

⑹ C語言指向函數的指針

#include<stdio.h>
#include<math.h>
void main()
{float area(float a,float b); //錯在這里在使用area函數之前 ,必須要聲明
float a,b,s,l;
printf("輸入兩直角邊的長度:");
scanf("%f%f",&a,&b);
float (*p)(float,float); //錯在這里要加上形參
float lenght(float a,float b);
p=area;
s=(*p)(a,b);
l=lenght(a,b);
printf("面積=%.2f\t斜邊長=%.2f\n",s,l);
}
float area(float a,float b)
{
float s;
s=a*b/2;
return s;
}
float lenght(float a,float b)
{
float l;
l=sqrt(a*a+b*b);
return l;
}

⑺ c語言:關於指向函數的指針編程

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidvirtualFun(intchoice,intn,char*str[],char*(*p)(int,char**));
char*maxs(intn,char*s[]);//此函數通過指向函數的指針調用
char*mins(intn,char*s[]);//此函數通過指向函數的指針調用
char*minc(intn,char*s[]);//此函數通過指向函數的指針調用
voidMenu();
char*(*func)(intn,char**);
intmain(){
char*name[]={"FOLLOWME","BASIC","GREATWALL","FORTRAN","COMPUTERDESIGN"};
intn=5;
charch=0;
while(ch!=4){
Menu();
ch=getchar();
getchar();//ignore' '
ch=ch-'0';
virtualFun(ch,n,name,func);
}
return0;
}
voidvirtualFun(intchoice,intn,char*str[],char*(*p)(intn,char**name)){
switch(choice){
case1://maxstring
p=maxs;
break;
case2:
p=mins;
break;
case3:
p=minc;
printf("[resultis:%c] ",*p(n,str));//becausethereturnisachar
default:
return;
}
printf("[resultis:%s] ",p(n,str));
}
char*maxs(intn,char*s[]){
inti;
char*max=s[0];
for(i=1;i<n;i++){
if(strcmp(max,s[i])<0)
max=s[i];
}
returnmax;
}
char*mins(intn,char*s[]){
inti;
char*min=s[0];
for(i=1;i<n;i++){
if(strcmp(min,s[i])>0)
min=s[i];
}
returnmin;
}
char*minc(intn,char*s[]){
inti;
charch=s[0][0],*p,*r=s[0];
for(i=0;i<n;i++){
p=s[i];
while(*p++){
if(*p>0x20&&ch>*p){
ch=*p;
r=p;
}
}
}
returnr;
}
voidMenu(){
charmenu[]="1maxstring
2minstring
3minchar
4exit ";
printf("%s",menu);
}

⑻ 求教C語言的指向函數的指針

*fun是指創建的指向這個這個函數的指針變數名為fun,因為你的return sp中sp是指針變數,所以fun也必須為指針; 當然,如果不需要返回值,用fun也可以

⑼ C語言的指向函數的指針的問題

函數指針就是一個函數的首地址,這個在匯編裡面最好看明白了.
比如:int * a (int i, int j) ; 假設a的值是:0x3312FF80,,下面是匯編調用的例子.
push j
push i
call 0x33FF80
上面是調用方法,而int* a(int i, int j); 的返回值也很容易看出來,返回一個DWORD類型的一個指針而已.反匯編應該是 return n;這里的n是四個位元組,應為返回是一個指針類型,在32位下指針就是4位元組.

我有仔細研究了下你的問題,你是弄不明白 int* a() 和int (*p)() 嗎?還是別的什麼意思?請繼續追問.
是否可以解決您的問題?

⑽ c語言指向函數的指針問題

首先,這個代碼連編譯的過不了
單從你主函數的x=sub(p,q,3),我也不知道你那是q還是9。
忽略編程的角度,單從題目的大意,把你的q當做是9
x = sub(p,9,3) = funa(9,3) = 9+3 = 12;
x += sub(funb,8,3),x = x+funb(8,3) = 12 + (8-3) = 17
結果是17

熱點內容
天籟哪個配置親民 發布:2025-01-12 23:16:26 瀏覽:481
零售通交易密碼是什麼 發布:2025-01-12 23:13:02 瀏覽:318
監控器壓縮 發布:2025-01-12 22:51:29 瀏覽:247
android加密工具 發布:2025-01-12 22:51:19 瀏覽:895
伺服器ip是東方有線 發布:2025-01-12 22:32:07 瀏覽:842
數據源碼補碼 發布:2025-01-12 22:29:41 瀏覽:867
魅族賬號密碼忘記怎麼辦啊 發布:2025-01-12 22:05:12 瀏覽:510
ps工作需要什麼配置電腦 發布:2025-01-12 21:52:22 瀏覽:606
福州優信解壓 發布:2025-01-12 21:50:40 瀏覽:430
會員過期緩存的能看嗎不聯網 發布:2025-01-12 21:16:47 瀏覽:769