|
|
In this example, we define the global array variable before it is used:
#include <stdio.h>
int A[10]; // Define (global) array before use
int main(int argc, char *argv[] )
{
int i, j;
for (i = 0; i < 10; i++)
A[i] = i; // Use array
for (i = 0; i < 10; i++)
printf("%d ", A[i]); // Use array
printf("\n\n");
}
|
There is
no
compiler error
DEMO:
demo/C/set1/declare-array3.c
If we define the global array variable after it is used:
#include <stdio.h>
int main(int argc, char *argv[] )
{
int i, j;
for (i = 0; i < 10; i++)
A[i] = i; // Use array
for (i = 0; i < 10; i++)
printf("%d ", A[i]); // Use array
printf("\n\n");
}
int A[10]; // Define (global) array after use
|
There will be a
undeclared identifier
compiler error
DEMO:
demo/C/set1/declare-array3.c
We can fix the error by declaring the global array variable before it is used:
#include <stdio.h> extern int A[10]; // Declare (global) array before use int main(int argc, char *argv[] ) { int i, j; for (i = 0; i < 10; i++) A[i] = i; // Use array for (i = 0; i < 10; i++) printf("%d ", A[i]); // Use array printf("\n\n"); } int A[10]; // Define (global) array after use |
The declaration "extern int A[10];" tells the C compiler that the name A is an array ([ ]) of integers (int)
DEMO: demo/C/set1/declare-array3.c
The array size is optional in the array declaration of a 1-dimensional array:
#include <stdio.h> extern int A[ ]; // Declare (global) array before use int main(int argc, char *argv[] ) { int i, j; for (i = 0; i < 10; i++) A[i] = i; // Use array for (i = 0; i < 10; i++) printf("%d ", A[i]); // Use array printf("\n\n"); } int A[10]; // Define (global) array after use |
( because the array length information are not retained by the C compiler)
DEMO: demo/C/set1/declare-array3.c
In this example, we define the global 2-dimensional array variable before it is used:
#include <stdio.h>
int B[4][3]; // Define (global) array before use
int main(int argc, char *argv[] )
{
int i, j;
for (i = 0; i < 4; i++)
for (j = 0; j < 3; j++)
B[i][j] = i+j; // Use array
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
printf("%d ", B[i][j]); // Use array
printf("\n");
}
printf("\n\n");
}
|
There is
no
compiler error
DEMO:
demo/C/set1/declare-array4.c
If we define the global 2-dimensional array variable after it is used:
#include <stdio.h>
int main(int argc, char *argv[] )
{
int i, j;
for (i = 0; i < 4; i++)
for (j = 0; j < 3; j++)
B[i][j] = i+j; // Use array
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
printf("%d ", B[i][j]); // Use array
printf("\n");
}
printf("\n\n");
}
int B[4][3]; // Define (global) array after use
|
There will be a
undeclared identifier
compiler error
DEMO:
demo/C/set1/declare-array3.c
We can fix the error by declaring the global 2-dimensional array variable before it is used:
#include <stdio.h> extern int B[4][3]; // Declare (global) array before use int main(int argc, char *argv[] ) { int i, j; for (i = 0; i < 4; i++) for (j = 0; j < 3; j++) B[i][j] = i+j; // Use array for (i = 0; i < 4; i++) { for (j = 0; j < 3; j++) printf("%d ", B[i][j]); // Use array printf("\n"); } printf("\n\n"); } int B[4][3]; // Define (global) array after use |
DEMO: demo/C/set1/declare-array4.c
The first dimension size is optional in the array declaration of a 2-dimensional array:
#include <stdio.h> extern int B[ ][3]; // Declare (global) array before use int main(int argc, char *argv[] ) { int i, j; for (i = 0; i < 4; i++) for (j = 0; j < 3; j++) B[i][j] = i+j; // Use array for (i = 0; i < 4; i++) { for (j = 0; j < 3; j++) printf("%d ", B[i][j]); // Use array printf("\n"); } printf("\n\n"); } int B[4][3]; // Define (global) array after use |
(Reason explained
next....)
DEMO:
demo/C/set1/declare-array4.c
|
|