c++的函数指针怎么写?
答案:4 悬赏:0
解决时间 2021-02-15 04:13
- 提问者网友:话酸浅沫
- 2021-02-14 07:51
c++的函数指针怎么写?
最佳答案
- 二级知识专家网友:野性且迷人
- 2021-02-14 09:05
如:
有一函数
void fun(void);//这是fun函数的声明
fun(){};//这是fun函数的调用
fun;//当只是函数的名字的时候就代表着函数入口的地址
这样,我们可以通过定义一个指针,然后使这个指针指向函数的入口,这样,我么就可以间接调用函数了。
具体例子
int main()
{void (*p)(int n);//声明函数指针的时候,参数的个数和类型必须和被指向的函数相同
void fun(int a);
p=fun;//指针p指向fun,fun是地址,正确
(*p)(0);//通过指针调用函数,与p();等价其中0是作为函数的参数
return 0;}
void fun(int a)
{}
因为函数的调用是需要一定的开销的,当一个函数经常被调用的时候,如果函数只有几行,这样我们可以通过inline函数来解决函数调用开销的问题。
但是如果函数有很多行且经常调用,那么,我们可以通过函数指针来解决函数调用开销的问题
有一函数
void fun(void);//这是fun函数的声明
fun(){};//这是fun函数的调用
fun;//当只是函数的名字的时候就代表着函数入口的地址
这样,我们可以通过定义一个指针,然后使这个指针指向函数的入口,这样,我么就可以间接调用函数了。
具体例子
int main()
{void (*p)(int n);//声明函数指针的时候,参数的个数和类型必须和被指向的函数相同
void fun(int a);
p=fun;//指针p指向fun,fun是地址,正确
(*p)(0);//通过指针调用函数,与p();等价其中0是作为函数的参数
return 0;}
void fun(int a)
{}
因为函数的调用是需要一定的开销的,当一个函数经常被调用的时候,如果函数只有几行,这样我们可以通过inline函数来解决函数调用开销的问题。
但是如果函数有很多行且经常调用,那么,我们可以通过函数指针来解决函数调用开销的问题
全部回答
- 1楼网友:转身后的回眸
- 2021-02-14 11:06
一楼的 有时你看到的不一定就是正确的
你返回局部数组的话 首地址是可以返回 不过指向的内容已经被释放了 也就是你返回了一个野指针
也许你试的时候 会得到原数组的值 那是因为那段空间被释放了只是说可以被重新申请使用 而标准并没有规定必须清0 一旦这段内存被重新使用 你的程序会出错
你可以返回局部堆指针 就是new那种 堆指针需要手动才能释放的 要记得delete
或者你在函数外定义数组 传参给函数 再返回该地址
或者你把局部数组定义成static的 使其生命周期全局有效
- 2楼网友:邪性洒脱
- 2021-02-14 10:08
是不是返回值是指针的函数;
如果是这个,简单;
函数名前面写上你要得到的指针类型,
函数体内,操作自己搞定,注意最后
return后面是你要返回的指针
- 3楼网友:一池湖水
- 2021-02-14 09:14
typedef void(*LPFUNCTION1) (bool,bool);
LPFUNCTION1 func;
void function( bool b1, bool b2);
func = function;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯