C++ でポインター配列に相当することをするには、次のようにすればよい? C++ では、C の malloc() と free() の代りに、 new 演算子と delete 演算子を用いることになるだろう。
/* * cpptest4.C --- ひとまずの完成 */ #include <iostream.h> #include <math.h> typedef double scalar; typedef scalar *vector; typedef vector *matrix; /* m行n列の行列を作る */ matrix new_matrix(int m, int n) { vector abody; matrix a; a = new vector [m]; if (a == NULL) return NULL; abody = new scalar [m * n]; if (abody == NULL) { delete [] a; return NULL; } for (int i = 0; i < m; i++) { a[i] = abody; abody += n; } return a; } void free_matrix(matrix a) { delete [] a[0]; delete [] a; } int main() { int m,n,i,j; matrix a; cout << "m,n: "; cin >> m >> n; a = new_matrix(m,n); if (a == NULL) { cerr << "new_matrix() に失敗\n"; exit(1); } for (i = 0; i < m; i++) for (j = 0; j < n; j++) a[i][j] = (i+1)*(j+1); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) cout << "a[" << i << "][" << j << "]=" << a[i][j] << " "; cout << "\n"; } return 0; }