返回函数的指针, 参数为函数指针。。。。。

C++通过引用传递数组

 

数组形参可以声明为数组的引用。如果形参是数组的引用,编译器不会将数组实参转化为指针,而是传递数组的引用本身。

在这种情况下,数组大小成为形参和实参类型的一部分(实参长度与形参长度不同时,编译报错)。

 

void printValue(int (&a)[5]){...}

 

int main(){ 

int i=0; 

int j[2]={0,1}; 

int k[5]={0,1,2,3,4}; 

 

printValue(i);//编译报错

printValue(j); //编译报错

printValue(k); //编译OK 

return 0; 

}

 

 

 

C++多维数组的传递

C++中没有多维数组,多维数组实际是数组的数组。传参时,形参除了第一维以外的所有维的长度都是元素类型的一部分,必须明确指定。

 

void printValue(int (*a)[5], int row_size) {...}

 

int (*a)[5]:表示a是指向长度为5的整型数组的指针。

括号是必须的,因为: 
int (*a)[5]:表示a是指向长度为5的整型数组的指针。

int *a[5]:表示a是长度为5的数组,每个元素都是int*类型(a是指针的数组)。

 

C++指向函数的指针

函数指针指向一个函数,函数指针也有特定的类型,这个类型由函数的返回值类型和形参表确定,与函数名无关。

bool (*pf)(const string &, const string &);

 

这个语句将pf声明为一个指向函数的指针,它所指向的函数带有两个const string &类型的参数,返回值为bool类型。

 

typedef bool (*cmpFunc)(const string &, const string &);

 

该语句表示cmpFunc是一种指向函数的指针类型的名字(!类型名)。

cmpFunc f1 = my_func;

 

函数指针只能用同类型的函数或函数指针、或0值敞亮表达式来初始化或赋值。

 

返回指向函数的指针

函数可以返回一个函数指针。

double (*ff(int))(char*,long);

 

ff是一个函数,ff的参数是int类型,ff的返回值是一个函数指针,这个函数指针类型(形参表为char*,long,返回值类型为double)如下:

double (*)(char*,long);

 

 

在使用函数指针时,可以通过函数指针或者接引用的函数指针调用函数。

例如:

pf(“aa”,”bb”); 

(*pf)(“aa”,”bb”);

 

 

函数指针作为形参时,可以是函数指针。

typedef bool (*cmpFunc)(const string &, const string &); 

void f1(cmpFunc); //OK




转载:http://www.cnblogs.com/apprentice89/p/3157441.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值