函數、指針、數組結合到一起就是函數指針數組。
首先它是一個數組,這個數組的元素是函數指針(指向函數的指針)。
如:
int(*fn[])(int,int);
一般的函數指針是這樣定義的:
int(*fn)(int,int);
一般的指針函數是這樣定義的:
int* fn (int,int);
表示一個函數,它的返回值是一個指針:int*。
運算符的優先級不僅體現在一般的表達式中,也體現在類似上面的聲明表達式中。指針運算符*的優先級要低于函數運算符()。
所以對于int* fn (int,int);
它最終是一個函數,是一個返回指針的函數。
對于int(*fn)(int,int);
用括號來提升了優先級,它最終是一個指針,是一個指向函數的指針,稱為函數指針。
對于int(*fn[])(int,int);
先要分析括號內的部分,*的優先級低于[],所以它最終是一個數組,是一個數組元素是指針的數組,其中的指針是函數指針,所以最終它是一個函數指針數組。
基本思路是從內核開始層層外推,層層加定語。也就是:數組→指針數組→函數指針數組:數組元素是函數指針,指針是指向函數的指針。
函數指針數組的初始化:
int(*fn[])(int,int)={add,minus,divide,multiple}; //add,minus,divide,multiple是函數名
以下是實例:
#include<iostream>using namespace std;int add(int a,int b){return a+b;}int minus(int a,int b){return a-b;}int divide(int a,int b){return a*b;}int multiple(int a,int b){return a/b;}int(*fn[])(int,int)={add,minus,divide,multiple};int cal(int a, int b, int opp){ return fn[opp](a,b);}void main(){ int a=5, b=3; cout<<cal(a,b,0)<<" "<<cal(a,b,1)<<" "<<cal(a,b,2)<<" "<<cal(a,b,3)<<" "<<endl; system("pau");}//8 2 15 1
-End-
本文發布于:2023-02-28 21:07:00,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167772753899870.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:指針初始化(指針初始化是什么意思).doc
本文 PDF 下載地址:指針初始化(指針初始化是什么意思).pdf
| 留言與評論(共有 0 條評論) |