【发布时间】:2014-09-20 21:38:07
【问题描述】:
假设我有一个函数:
void foo (int i){
cout << "argument is: " << i << endl;
}
我将这个函数传递给:
void function1 (void(callback)(int), int arg){
callback(arg);
}
void function2 (void(*callback)(int), int arg){
callback(arg);
}
这两个函数是否相同?两者有区别吗?
【问题讨论】:
-
完全相同。参数中的函数类型调整为指针。
-
与声明接受
int *x与int x[]的函数相同;您不能按值传递函数或数组;没有显式*的版本只是指针版本的语法糖。