日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于函数指针

發布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于函数指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
其實關于 函數指針 這個概念,之前早就搞清楚了,實際中也用過,只不過用的不多,會生疏,明確的表達形式經常會忘掉,我這人記性不是很好。特轉載一篇以前看過的文章(這篇文章也到處被轉載,條理還算清楚,被我多轉一次也無妨了),以備忘。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
指針函數和函數指針有什么區別

這兩個概念都是簡稱,
1 指針函數是指帶指針的函數,即本質是一個函數。我們知道函數都又返回類型(如果不返回值,則為無值型),只不過指針函數返回類型是某一類型的指針。其定義格式如下所示:

返回類型標識符 *返回名稱(形式參數表)
{ 函數體 }

返 回類型可以是任何基本類型和復合類型。返回指針的函數的用途十分廣泛。事實上,每一個函數,即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該 地址相當于一個指針。比如函數返回一個整型值,實際上也相當于返回一個指針變量的值,不過這時的變量是函數本身而已,而整個函數相當于一個“變量”。例如 下面一個返回指針函數的例子:

#include

float *find();
main()
{
????static float score[][4]={{60,70,80,90},{56,89,34,45},{34,23,56,45}};
????float *p;
????int i,m;
????printf("Enter the number to be found:");
????scanf("%d",&m);
????printf("the score of NO.%d are:\n",m);
????p=find(score,m);
????for(i=0;i<4;i++)
????????printf("%5.2f\t",*(p+i));
}

float *find(float(*pionter)[4],int n)/*定義指針函數*/
{
????float *pt;
????pt=*(pionter+n);
????return(pt);
}

學 生學號從0號算起,函數find()被定義為指針函數,起形參pointer是指針指向包含4個元素的一維數組的指針變量。pointer+1指向 score的第一行。*(pointer+1)指向第一行的第0個元素。pt是一個指針變量,它指向浮點型變量。main()函數中調用find()函 數,將score數組的首地址傳給pointer.

2,“函數指針”是指向函數的指針變量,因而“函數指針”本身首先應是指針變量, 只不過該指針變量指向函數。
這正如用指針變量可指向整型變量、字符型、數組一樣,這里是指向函數。如前所述,C在編譯時,每一個函數都有一個入口地址,該 入口地址就是函數指針所指向的地址。有了指向函數的指針變量后,可用該指針變量調用函數,就如同用指針變量可引用其他類型變量一樣,在這些概念上一致的。

函數指針有兩個用途:調用函數和做函數的參數。
函數指針的說明方法為:
???????? 數據類型標志符 (*指針變量名)(參數);
???? 注:函數括號中的參數可有可無,視情況而定。
下面的程序說明了函數指針調用函數的方法:

#include

int max(int x,int y){ return(x>y?x:y); }

void main()
{
????int (*ptr)();
????int a,b,c;
????ptr=max;
????scanf("%d,%d",&a,&b);
????c=(*ptr)(a,b);
????printf("a=%d,b=%d,max=%d",a,b,c);
}

ptr 是指向函數的指針變量,所以可把函數max()賦給ptr作為ptr的值,即把max()的入口地址賦給ptr,以后就可以用ptr來調用該函數,實際上 ptr和max都指向同一個入口地址,不同就是ptr是一個指針變量,不像函數名稱那樣是死的,它可以指向任何函數,就看你像怎么做了。在程序中把哪個函 數的地址賦給它,它就指向哪個函數。而后用指針變量調用它,因此可以先后指向不同的函數,不過注意,指向函數的指針變量沒有++和--運算,用時要小心。

總結

以上是生活随笔為你收集整理的关于函数指针的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。