1

コードは次のとおりです。

#include<iostream>
using namespace std;
typedef struct ptrs
{
    int (*addptr)(int a, int b);
}mems;

int add(int a, int b)
{
    int result = a+b;
    return result;
}

int main()
{
    mems ptrtest;
    ptrtest.addptr = &add;
    int c = (*ptrtest.addptr)(3,4);
    //int c = ptrtest.addptr(3,4);
    cout << c << endl;
    return 0;
}

コードを置き換えるとint c = (*ptrtest.addptr)(3,4); それが次の行(現在注釈付き)であるため、結果は同じになります。なぜですか?

4

3 に答える 3

1

関数と関数ポインタは、おそらく便宜上、同じ意味で使用できます。特に、C++11 標準のセクション 5.2.2 では、関数または関数へのポインターを使用して関数呼び出しを行うことができると規定されています。

于 2013-06-12T13:18:04.183 に答える
0

C++ は、正しい構文が作成される場合、関数名を関数ポインターに (およびその逆に) 自動的にキャストします。

于 2013-06-12T13:18:15.383 に答える