ちなみに、C++ の場合は、 関数 malloc() と free() よりも、 演算子 new と delete を使うべきである。 例えば次のようなプログラムになる。
/* * prog11-C++.cpp --- 「動的な配列」をポインターで実現する * コンパイルするには、たとえば g++ -o prog11-C++ prog11-C++.cpp */ #include <iostream> #include <cstdlib> using namespace std; /* n 次元のベクトル x, y の内積を計算する */ double inner_product(double *x, double *y, int n) { int i; double s; s = 0.0; for (i = 0; i < n; i++) s += x[i] * y[i]; return s; } int main(void) { int i, N; double *a, *b; cout << "二つのベクトルの内積を計算します。" << endl; cout << "次元を入力してください: "; cin >> N; a = new double [N]; b = new double [N]; if (a == NULL || b == NULL) { cerr << "ベクトルを記憶するメモリーの確保に失敗しました。" << endl; exit(1); } cout << "一つ目のベクトル a の入力\n"; for (i = 0; i < N; i++) { cout << i+1 << " 番目の成分= "; cin >> a[i]; } cout << "二つ目のベクトル b の入力" << endl; for (i = 0; i < N; i++) { cout << i+1 << " 番目の成分="; cin >> b[i]; } cout << "内積=" << inner_product(a, b, N) << endl; /* a, b のために確保したメモリーを解法する * プログラムの最後だからなくても良いが解放の仕方の説明用 */ delete [] a; delete [] b; return 0; }