Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

arrays

c

input

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!

like image 535
Mr T Avatar asked Mar 13 '23 14:03

Mr T


1 Answers

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).

like image 150
Jochen Müller Avatar answered Apr 28 '23 06:04

Jochen Müller