PRODUCT : Borland C++ NUMBER : 1547 VERSION : All OS : All DATE : October 25, 1993 PAGE : 1/2 TITLE : Returning a 2D array from a function //-------------------------------------------------------------- // // Description: Example program demonstrates declaring a // function that returns a two-dimensional array and a // pointer to a function of that type. // //-------------------------------------------------------------- #include const arraySize = 50; const arrayCount = 5; const initElem = 10; // Func takes an int and returns a pointer to an array of // arrayCount arrays of arraySize doubles after initializing // the initElem'th element of the first array with the passed // double value. double (* Foo( double i )) [arraySize] { // Allocate space ( arrayCount * arraySize * // sizeof(double) ) double (*p) [arraySize] = new double [arrayCount] [arraySize]; // Initialize the initElem'th element of the first array p[0][initElem] = i; return p; } int main() { // Pointer to a function which takes an int and returns a // pointer to an open array of arrays of arraySize doubles double (* (*FuncPtr)(double) ) [arraySize]; // The compiler would not allow this if the function // prototype and the function pointer were not of // compatible types. FuncPtr = Foo; // Pointer to an open array of arrays of arraySize doubles PRODUCT : Borland C++ NUMBER : 1547 VERSION : All OS : All DATE : October 25, 1993 PAGE : 2/2 TITLE : Returning a 2D array from a function double (*data)[arraySize]; // Function allocates data space and returns with // initElem'th element of first array initialized to // passed value. data = FuncPtr( 5.5 ); cout << "array[0][" << initElem << "]=" << data[0][initElem] << endl; delete [] data; return 0; } DISCLAIMER: You have the right to use this technical information subject to the terms of the No-Nonsense License Statement that you received with the Borland product to which this information pertains.