コードは以下の通りです。説明をして、出力も与えてください。ここで何が起こっているのかまた出力は何ですか? (手がかりなし)
#include <iostream>
#include <conio.h>
using namespace::std;
int main() {
// clrscr();
int sum(int(*)(int), int);
int square(int);
int cube(int);
cout << sum(square, 4) << endl;
cout << sum(cube, 4) << endl;
getch();
// return 0;
}
int sum(int(*ptr)(int k), int n){
int s = 0;
for(int i =1; i <= n; i++){
s +=(*ptr)(i);
}
return s;
}
int square(int k){
int sq;
sq =k *k;
return k*k;
}
int cube(int k){
return k*k*k;
}
何も起こりません!このコードを理解するのを手伝ってください。特に機能
int sum(int(*)(int), int);
上記の構文を特に理解できません。しかし、コード全体を説明するのに役立つだろう。
n = 4
は、機能sum(square, 4)
が呼び出された場合:
宿題の助けを求める質問には、問題を解決するために今までに行った作業の概要と、解決している問題の説明が含まれている必要があります。 – Slava
デバッガと呼ばれるツールがあります。コードを一行ずつ進んで実行することができます。 'type(* possible_name)(parameters)'は関数ポインタです。 – NathanOliver
不思議な見た目のコードは、関数のパラメータ自体がint型の1つのパラメータを持つ別の関数であるという宣言です。このように考えると、関数のアドレスを別の関数に渡しています。呼び出された関数は、そのアドレスを使用して、そのアドレスを指す関数を呼び出すことができます。 –