HOWTO: Create Two-Dimensional Arrays with Operator newLast reviewed: September 30, 1997Article ID: Q102391 |
The information in this article applies to:
SUMMARYThe code example below demonstrates creating a two-dimensional array using the C++ operator new. For more information on creating a two- dimensional array in C with the malloc() function, please search in the Microsoft Knowledge Base on the following words:
dynamic memory allocation two dimensional array MORE INFORMATIONTo conceptualize a two-dimensional array, consider a one-dimensional array of one-dimensional arrays. To construct a two-dimensional array, first allocate an array of pointers to pointers. Then, index through the first array and allocate additional one-dimensional arrays. The first code example below copies command-line arguments into a two- dimensional array. The first dimension represents the total number of command-line arguments. The second dimension has a variable length and represents the length of each command-line argument. The second code example below dynamically creates a two-dimensional array of integers where user input specifies the size of each dimension. The example also initialized the array to contain random values and displays the contents of the array.
Sample Code 1
/* * Compiler options needed: None */ #include <iostream.h> #include <new.h> #include <string.h> char **TwoDArray; void main(int argc, char **argv) { // Allocate the first dimension. TwoDArray = new char*[argc]; for (int i = 0; i < argc; i++) { // Allocate the second dimension TwoDArray[i] = new char[strlen(argv[i]) + 1]; strcpy(TwoDArray[i], argv[i]); } cout << "This is the command line that was passed in:" << endl; for (i = 0; i < argc; i++) { cout << "argv[" << i << "] = "; // Print the command line arguments one at a time. for (unsigned j = 0; j <= strlen(TwoDArray[i]); j++) cout << TwoDArray[i][j]; cout << endl; } // Delete the 2D array for (i = 0; i < argc; i++) delete [] TwoDArray[i]; delete [] TwoDArray; } Sample Code 2
/* * Compiler options needed: None */ #include <iostream.h> #include <new.h> #include <stdlib.h> #include <time.h> int **MyArray; void main(void) { int d1, d2, ndx1, ndx2; cout << "Enter the first array dimension: "; cin >> d1; cout << "Enter the second array dimension: "; cin >> d2; // Allocate memory for the array MyArray = new int*[d1]; for (ndx1 = 0; ndx1 < d1; ndx1++) MyArray[ndx1] = new int[d2]; // Fill the array with random integer values between 0 and 9 srand((unsigned)time(NULL)); for (ndx1 = 0; ndx1 < d1; ndx1++) for (ndx2 = 0; ndx2 < d2; ndx2++) MyArray[ndx1][ndx2] = rand() % 10; // Display the array for (ndx2 = 0; ndx2 < d2; ndx2++) cout << '\t' << "col " << ndx2; // col #'s cout << endl; for (ndx1 = 0; ndx1 < d1; ndx1++) { cout << "row " << ndx1; // row #'s for (ndx2 = 0; ndx2 < d2; ndx2++) { cout << '\t'; cout << MyArray[ndx1][ndx2]; } cout << endl; } // Delete the array for (ndx1 = 0; ndx1 < d1; ndx1++) delete [] MyArray[ndx1]; delete [] MyArray; } |
Additional query words: 8.00 8.00c
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |