First | Next | Previous | Last | Glossary | About |
An array is a data structure composed of many elements of the same data type. C++ bases array indices at 0 (zero) so the last element in a C++ array has an index (or subscript) which is one less than the array's maximum size.
//ex11.cc #include <iostream> int main() { int ar1[100]; // 100 elements, 0 to 99 float ar2[4] = { 1.01, 2.02, 3.03, 4.04 }; int i; cout << "size of ar2 " << sizeof(ar2) << endl; for (i = 0; i <= 99; ar1[i] = i, i++); for (i = 0; i < 4; cout << ar2[i] << endl, i++); return 0; }
This example shows us quite a bit about arrays:
We can declare arrays of any data type and the size of an array is only limited by the available memory. Remember that each element of an array is the same kind.
This topic is included to show you that character arrays can be used in C++. However when using character arrays as strings they can be quite tricky to deal with.
Later I introduce a string class which is available in C++. This provides a much nicer way to handle strings. For now just accept that we can deal with arrays of characters if we want to.
//ex12.cc #include <iostream> int main() { char string1[ ] = {'F','r','e','d','\0'}; char string2[ ] = {"Fred"}; cout << "Size of string1 is " << sizeof(string1) << " bytes" << endl; cout << "string1 contains " << string1 << endl; cout << "Size of string2 is " << sizeof(string2) << endl; cout << "string2 contains " << string2 << endl; return 0; } The output is: Size of string1 is 5 bytes string1 contains Fred Size of string2 is 5 string2 contains Fred
I will reiterate the last point:
With this null-terminated string type the length of the variable need not be specified, the compiler will automatically determine the size according to the placement of null. The null character takes up a place in the array so whenever character arrays are being declared make sure you allow for the null and be sure that any string values you use are terminated with the null character. Programs can do frightening things to your computer system when strings are improperly terminated.
Later I will show you much better ways to deal with strings using the string class in C++.
We are not limited to single dimensioned arrays, we can have as many dimensions to an array as we need:
//ex13.cc #include <iostream> #include <iomanip> int main() { int num[10][10]; int row, column; for (row = 0; row < 10; row++) for (column = 0; column < 10; column++) num[row][column] = row * column; for (row = 0; row < 10; row++) for (column = 0; column < 10; column++) cout << setw(4) << num[row][column] << " "; return 0; }
The declaration int num[10][10] declares a two-dimensioned array of size 10 by 10. Any reference to an element in the array then uses a pair of indices or subscripts, eg
0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 0 2 4 6 8 10 12 14 16 18 0 3 6 9 12 15 18 21 24 27 0 4 8 12 16 20 24 28 32 36 0 5 10 15 20 25 30 35 40 45 0 6 12 18 24 30 36 42 48 54 0 7 14 21 28 35 42 49 56 63 0 8 16 24 32 40 48 56 64 72 0 9 18 27 36 45 54 63 72 81
The output from example 3 is shown here.
The neat spacing is provided by the stream manipulator setw(4). This manipulator sets the output field width to 4 characters.
....... 0 0 0 0 0 0 0 0 0 0 ....... 0 1 2 3 4 5 6 7 8 9 ....... 0 2 4 6 8 10 12 14 16 18 ....... 0 3 6 9 12 15 18 21 24 27 ....... 0 4 8 12 16 20 24 28 32 36 ....... 0 5 10 15 20 25 30 35 40 45 ....... 0 6 12 18 24 30 36 42 48 54 ....... 0 7 14 21 28 35 42 49 56 63 ....... 0 8 16 24 32 40 48 56 64 72 ....... 0 9 18 27 36 45 54 63 72 81 Totals: 0 45 90 135 180 225 270 315 360 405
First | Next | Previous | Last | Glossary | About |
Copyright © 1999 - 2001
David Beech