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)