-----------------函数指针----------------------
函数指针的声明方式:
返回类型 (*指针名)(参数列表)
例如:
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; }