Mr T
Mr T

Reputation: 524

C: Define global array variable that user can declare its size

I want to set a global reference of an int array, in C language, but I want to initialize it inside main function (actually the user is going to declare its size). Anyone knows how is this done?

Thanks in advance!

Upvotes: 4

Views: 4055

Answers (1)

Jochen Müller
Jochen Müller

Reputation: 309

Declare a pointer to an int as a global variable and initialize it in main using malloc.

/* outside any function, so it's a global variable: */
int *array;
size_t array_size;

/* inside main(): */
array_size = user_defined_size;
array = malloc( sizeof(int)*array_size);
if ( array == NULL) {
    /* exit - memory allocation failed. */
}
/* do stuff with array */
free(array);

If you need to access the global variable from another module (source file), declare it there again using

extern int *array;
extern size_t array_size;

or, preferably, declare them extern in a header file included in any source file that uses the array, including the source where they are defined (to ensure type consistency).

Upvotes: 7

Related Questions