これを観察したときに問題が発生しました。 Functionは、プログラムのある時点から呼び出すことができる名前が与えられた文のグループであると考えられるからです。私はこのプログラムを実行すると引数なしで呼び出された関数がエラーを返さない
#include <iostream>
#include <vector>
using namespace std;
int getAbsolute(int x) {
return x > 0 ? x : -1*x;
}
int main() {
vector<int> arr;
for(int i = -5; i < 5; i++)
arr.push_back(i);
for(int i = 0; i < arr.size(); i++) {
cout << "abs(" << arr[i] << ") : "
<< getAbsolute << endl;
}
}
:
[email protected]~/Dropbox/cprog/demos : $ g++ testFunction.cpp
[email protected]~/Dropbox/cprog/demos : $ ./a.out
abs(-5) : 1
abs(-4) : 1
abs(-3) : 1
abs(-2) : 1
abs(-1) : 1
abs(0) : 1
abs(1) : 1
abs(2) : 1
abs(3) : 1
abs(4) : 1
[email protected]~/Dropbox/cprog/demos : $
を私の質問は、なぜ、このプログラムは私に私はエラーを与えるものではありません、ある整数の絶対値を与える簡単なプログラムを考えてみましょう議論を呼ぶことになっています、私のg ++に何か問題がありますか(-v 4.8.5)?そして、なぜこのプログラムの出力は各呼び出しで1になるのでしょうか?または、私はここに何かを逃している?私は本当に混乱しています。
あなたは関数を呼び出すのではなく、そのアドレスを使用しています – torkleyy
しようとしたかったのは 'getAbsolute()'でした。 – torkleyy
1はgetAbsoluteメモリアドレスから逆参照された値ですか?しかし、コンパイラは、関数のアドレスが生のポインタにすぎないので、どのくらい読む必要があるのかをどのように決定しますか? –