TYPE arrayName[ SIZE ]; |
extern TYPE arrayName[ ]; |
int a[10]; // Defines the variable a (array of 10 integers) extern int a[]; // Declaration |
int a[10]; // Define array int f(int i) { return a[i]; } |
Program file that declares an array
extern int a[]; // Declare array int main(int argc, char *argv[]) { int i; int f(int); // Declare function for ( i = 0; i < 10; i++ ) a[i] = i*i; for ( i = 0; i < 10; i++ ) cout << f(i) << endl; } |
Compile and run:
CC array01a.C array01b.C a.out |
Example:
extern int a[ 10 ]; // Declare array ^^^^ (ignored by C++) int main(int argc, char *argv[]) { int i; int f(int); // Declare function for ( i = 0; i < 10; i++ ) a[i] = i*i; for ( i = 0; i < 10; i++ ) cout << f(i) << endl; } |
(In fact, you can lie and put in any value you want. C++ could care less...)
TYPE arrayName [ SIZE1 ] [ SIZE2 ]; |
extern TYPE arrayName [ ] [ SIZE2 ]; |
In general:
|
int a[3][4]; // Defines the variable a (array of 3x4 integers) extern int a[][4]; // Declaration |
int a[3][4]; // Define array int f(int i) { return a[i]; } |
Program file that declares an array
extern int a[][4]; // Declare array int main(int argc, char *argv[]) { int i; int f(int); // Declare function for ( i = 0; i < 10; i++ ) a[i] = i*i; for ( i = 0; i < 10; i++ ) cout << f(i) << endl; } |
Compile and run:
CC array03a.C array03b.C a.out |
Example: a 3x4 array
Example:
a[0][0] is placed at position 0 a[0][1] is placed at position 1 a[0][2] is placed at position 2 a[0][3] is placed at position 3 a[1][0] is placed at position 4 a[1][1] is placed at position 5 ... a[i][j] is placed at position i*4 + j |
(It's easier to explain using a 2-dimensional array)