Объявление глобального массива в C? - PullRequest
0 голосов
/ 14 ноября 2011

Мне нужно объявить массив глобально, потому что я хочу, чтобы все методы имели доступ к нему в программе main.c. Однако, если я объявлю его в main.h, мне придется указать его размер во время объявления - проблема в том, что я не знаю размер, пока не будет вызван метод InitializeMemory (...), который принимает пользовательский ввод быть размером массива.

Ответы [ 3 ]

3 голосов
/ 14 ноября 2011

Создайте его как int *ptr; глобально (скажем, целое число); тогда в вашей функции;

 ptr = (int *) malloc(100*sizeof(int));
3 голосов
/ 14 ноября 2011

Не делайте его глобальным массивом, сделайте его глобальным указателем (для массива, выделенного в куче) и правильно инициализируйте его.

2 голосов
/ 14 ноября 2011

Если вам нужно выделить глобальный массив с размером, известным только во время выполнения, тогда вам нужен просто указатель, а затем вы будете использовать malloc в своем коде, как только узнаете размер.

 int *array;
 ...
 array = malloc(size_from_initialize_memory_function);
 // check that array != NULL.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...