Reputation: 524
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
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