-----------------函數指針----------------------
函數指針的聲明方式:
傳回類型 (*指針名)(參數清單)
例如:
int (*compare)(const char*,const char*);
#include <iostream>
typedef int (*hs)(int,int); //typedef用法,hs可以當成類型來用,聲明函數指針
using namespace std;
int add(int x,int y)
{
return x+y;
}
int multiply(int m, int n)
{
return m*n;
}
hs lookup(int choice) //函數傳回hs型,即指向函數的指針
{
if (choice==0)
return add;
else
return multiply;
}
int main()
{
int m,n,xz,res;
cout<<"請輸入兩個整數以選擇要進行的操作:"<<endl;
cin>>m>>n;
cout<<"相加輸入0,否則為相乘:"<<endl;
cin>>xz;
hs fun=lookup(xz);
res=fun(m,n);
cout<<"結果是:"<<res<<endl;
return 0;
}
----------------------多元數組作為函數參數-------------------------------------------
多元數組作為函數參數,第一維的大小可以省略,其他維的大小不能省略。
#include <iostream>
using namespace std;
int add(int x[][3][4],int n) //多元數組x作為形參
{
int res=0;
for (int i=0;i<n;i++)
for (int j=0;j<3;j++)
for (int k=0;k<4;k++)
res+=x[i][j][k];
return res;
}
int main()
{
int x[2][3][4]={{{1,2,3,4},{5,6,7,8},{9,10,11,12}},
{{13,14,15,16},{17,18,19,20},{21,22,23,24}}};
int res=add(x,sizeof(x)/sizeof(int[3][4])); //計算數組x的第一維大小
cout<<"和是:"<<res<<endl;
return 0;
}
轉載于:https://www.cnblogs.com/codehorse/archive/2013/05/09/3070034.html