Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐C++&引用;“东西”;(函数指针) < C++中的这种语法是什么?有人能给我指一下这个术语吗?这样我就可以看看我在课文中有没有发现什么_C++_Function_Pointers - Fatal编程技术网

隐C++&引用;“东西”;(函数指针) < C++中的这种语法是什么?有人能给我指一下这个术语吗?这样我就可以看看我在课文中有没有发现什么

隐C++&引用;“东西”;(函数指针) < C++中的这种语法是什么?有人能给我指一下这个术语吗?这样我就可以看看我在课文中有没有发现什么,c++,function,pointers,C++,Function,Pointers,起初我以为这是一个原型,但后来=和(*fn)把我甩了 以下是我的例子: void (*fn) (int&,int&) = x; 这是一个函数指针,指向接受两个int引用参数的函数,该函数不返回任何内容。函数指针被称为fn,并在x中被赋值。这是一个指向函数的指针,该函数对ints进行两次引用,并返回void,它看起来像是指向一个方法的函数指针,该方法采用两次整数引用,并且不返回任何内容。指针将命名为fn。您正在将其分配给x的地址,这很可能是一个与此描述匹配的函数 这声明并初始化函

起初我以为这是一个原型,但后来
=
(*fn)
把我甩了

以下是我的例子:

void (*fn) (int&,int&) = x;

这是一个函数指针,指向接受两个
int
引用参数的函数,该函数不返回任何内容。函数指针被称为
fn
,并在
x

中被赋值。这是一个指向函数的指针,该函数对
int
s进行两次引用,并返回
void
,它看起来像是指向一个方法的函数指针,该方法采用两次整数引用,并且不返回任何内容。指针将命名为fn。您正在将其分配给x的地址,这很可能是一个与此描述匹配的函数

这声明并初始化函数指针

变量名为
fn
,它指向具有以下签名的函数:

void pointedToFunction(int&, int&)
变量
fn
初始化为
x
中包含的值

可以使用以下语法调用指向函数:

int a;
int b;
(*fn)(a,b);
这相当于

int a;
int b;
pointedToFunction(a,b);

它是一个函数指针,指向以2个整数作为参数并返回void的函数。x必须是函数名。

函数指针

^好的,初学者参考资料。:-)

它可以重写为

typedef void (*T) (int&, int&);
T fn = x;
第二条语句很明显,它应该解决
=x问题。在第一个语句中,我们将
T
作为类型
void(*)(int&,int&)
的同义词,这意味着:

  • 指向函数的指针(
    (*…)
  • 返回
    void
  • 取两个参数:
    int&,int&

它是一个函数指针变量,初始化为
=
右侧的内容

函数类型可以这样编写:

typedef void func_t(int&,int&);
函数指针的大小将不同于:

typedef func_t *fn_t;
使用这些定义,变量声明将更加清晰:

 fn_t fn = ...;

Wikipedia页面上有一些关于这个主题的链接:

实际上,它们是对整数的引用,而不是整数(不,我不是下一个投票人)谷歌的“左右规则”。您也可能对cdecl工具感兴趣。谢谢大家。我没有玩过函数指针,但现在我对函数指针有了更好的理解。你可以用它来获得一些帮助。