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

c語言指向函數的指針

發布時間: 2022-08-29 23:19:37

『壹』 c語言如何定義一個指向指針函數的函數指針

void*f(int);//一個指針函數f
void*(*p)(int)=f;//一個指向f的函數指針p

『貳』 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語言中函數指針用法

在C語言中,指針被廣泛使用,而函數指針是最為高級的用法之一,也是容易疑惑的地方之一。看下面這段代碼:#include <stdio.h>void F(int a, int* output)
{
printf("a = %d\n", a);
*output = a + 1;
}typedef void (*FUNC)();int main()
{
FUNC f = F;
int ret = 0;
f(3, &ret);printf("ret = %d\n", ret);
return 0;
}上面看出 FUNC 的類型是與F的類型不匹配的,這樣可以通過編譯嗎?答案是: 可以的。由於在C語言中編譯函數的時候,是僅僅將其函數名作為該函數的
唯一標識,為其分配相應地址。所以雖然FUNC 與 F的類型不一致,但是對於編譯器看來
都是兩個地址,是無所謂的。用上面的特點,可以寫出非常通用的函數指針類型,typedef int (*FUNC)(); 這里之所有要有返回值,是用來標識該函數是否執行成功的錯誤代碼標志。 隨說做了有一段時間的C了,但盡然沒有搞明白函數指針的用法,見到了也沒有好好研究,今天終於有時間了,在網上搜了一下,終於弄懂了.原來就是定義了一個指針變數,只不過形式有點怪罷了.其實還是當成指針用就行了!一般有兩種用法:1定義函數指針int (*functionPoint)(int, int)----這只是定義了一個指向函數的指針int a(int a,int b)----------------這是與之相符的函數原型void main()-----------------------使用{ functionPoint = a;------------先賦值 functionPoint(1,2);----------調用
}2用typedef定義使用typedef int (*functionPoint)(int,int);----------定義了一種類型名為functionPoint的指針int a(int a, int b)-----------------------------函數原型void main(){ functionPoint fun;---------------------------定義指針 fun = a;-------------------------------------賦值 fun(1,2);---------------------------------使用
}函數就是這個函數的指針.

『肆』 c語言中函數指針是什麼 有什麼用 舉個實例

函數指針指函數的入口地址,作用就是跳轉。比如設置回調函數,線程函數、結構體中的成員函數等。

回調:

typedefvoid(WINAPI*USBCALLBACK)(bool,bool);//回調函數
……
USBCALLBACKpCallBack;

voidSetCallBack(USBCALLBACKUSBCallBack)//回調,指定設備接入或拔出
{
pCallBack=USBCallBack;
}

線程

DWORDWINAPIDataHandleThread(LPVOIDlParam)//處理數據線程
{
//TODO:
}
……
m_hDataHandle=CreateThread(NULL,0,DataHandleThread,this,0,NULL);//啟動線程

結構體

typedefstructLUNARHANDLE
{
bool(*GetLunar)(intiYear,intiMonth,intiDay,LUNARDATE*lunardate);
};

以上這幾種用法都摘自我自己的項目,請參考。

『伍』 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;
}
//也就是每個函數入口都是一個地址
//函數無它,唯指令集合而已,上面只是換個地址執行指令而已

『陸』 如何定義指向函數的指針

一、定義一個函數指針的方法如下:

返回值類型 (* 指針變數名)([形參列表]);

1、int func(int x); /* 聲明一個函數 */

2、int (*f) (int x); /* 聲明一個函數指針 */

3、f=func; /* 將func函數的首地址賦給指針f */

二、函數指針的用法:

函數指針的應用:(*指針變數名)(參數列表)

如:int c=(*ptr)(a,b);/* 函數指針 的使用*/

在C語言中,函數本身不是變數,但是可以定義指向函數的指針,也稱作函數指針,函數指針指向函數的入口地址。這種類型的指針可以被賦值、存放在數組中、傳遞給函數以及作為函數的返回值等等。

(6)c語言指向函數的指針擴展閱讀:

指針函數和函數指針的區別:

1、這兩個概念都是簡稱,指針函數是指返回值是指針的函數,即本質是一個函數。我們知道函數都有返回類型(如果不返回值,則為無值型),只不過指針函數返回類型是某一類型的指針。

2、返回指針的函數的用途十分廣泛。事實上,每一個函數,即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該地址相當於一個指針。比如函數返回一個整型值,實際上也相當於返回一個指針變數的值,不過這時的變數是函數本身而已,而整個函數相當於一個「變數」。

『柒』 C語言指向函數的指針的調用

#include<stdio.h>

int *d_bubblesort(int a[],int n)//數組長度為n的冒泡降序排序
{
int i,j;
int temp;
for(i=0;i<n;i++)
{
for(j=n-1;j>i;j--)
{
if(a[j]>a[j-1])
{
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}

}
}
return a;
}

void main()
{
int i;
int *p=NULL;
int a[10]={6,5,4,1,2,3,9,8,7,10};
int *(*fun)(int*,int);
fun=d_bubblesort;
p=fun(a,10);
for(i=0;i<10;i++)
{
printf("%d\t",p[i]);
}
}

『捌』 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)

熱點內容
php隨機小數 發布:2025-01-16 17:02:48 瀏覽:138
linuxterminal 發布:2025-01-16 17:02:04 瀏覽:248
如何配置i5的電腦 發布:2025-01-16 17:00:21 瀏覽:263
壓縮空氣泄漏 發布:2025-01-16 16:55:51 瀏覽:258
皖教育密碼是多少 發布:2025-01-16 16:50:59 瀏覽:450
有專用dhcp伺服器無法獲取ip 發布:2025-01-16 16:48:58 瀏覽:809
c語言找出迴文數 發布:2025-01-16 16:46:26 瀏覽:413
蘋果4的訪問限制密碼是多少 發布:2025-01-16 16:42:04 瀏覽:651
奇跡傳奇日服為什麼沒有伺服器 發布:2025-01-16 16:22:08 瀏覽:858
android瀏覽器控制項 發布:2025-01-16 16:22:05 瀏覽:155