配列ポインタの使い方
コード #include <iostream> #include <cstring> #include <new> using namespace std; //文字列の配列の動的メモリ確保 void func1(int nArray, int nStrLen, //In char ***szArray) //Out { int i; char **szArray_temp; try { //動的メモリ確保 szArray_temp = new char* [nArray]; for(i = 0; i < nArray; i++) { szArray_temp[i] = new char [nStrLen]; } } //new演算子の例外処理 catch(bad_alloc xa){ throw "ERROR bad_alloc"; } //ポインタに渡す。 *szArray = szArray_temp; return; } // void main() { try { int Num = 10; char **szArray; //文字列の配列の動的メモリ確保 func1(Num, 8, &szArray); int i; for(i = 0; i < Num; i++) { sprintf(szArray[i], "i = %d", i); } for(i = 0; i < Num; i++) { printf("szArray[%d] %s\n", i, szArray[i]); } delete [] szArray; } catch(char *c){ cout << c << endl; throw c; } catch(...){ cout << "Unknown Error" << endl; } return; }
結果 szArray[0] i = 0 szArray[1] i = 1 szArray[2] i = 2 szArray[3] i = 3 szArray[4] i = 4 szArray[5] i = 5 szArray[6] i = 6 szArray[7] i = 7 szArray[8] i = 8 szArray[9] i = 9