Я пытаюсь манипулировать динамически размещаемым массивом структур, но не могу сохранить данные при вызовах функций, несмотря на то, что это глобальная переменная. Я использую файл заголовка для объявления глобальной переменной, файл с тем же именем, что и файл заголовка с реализациями функций, и основной файл, который запускает программу. Вот содержимое трех файлов:
things.h:
struct st {
int number;
};
struct st *test;
// Function Declarations
int A();
int B();
things.c:
#include <stdio.h>
#include <stdlib.h>
#include <things.h>
int A() {
// Allocate size for 10 struct st's
test = malloc(10*sizeof(test));
test[5].number = -1;
printf("%d\n", test[5].number);
B();
return 0;
}
int B() {
printf("%d\n", test[5].number);
return 0;
}
mainFile.c:
#include <stdio.h>
#include <stdlib.h>
#include <things.h>
int main() {
A();
return 0;
}
Не уверен, в чем проблема. Ожидаемый результат:
-1
-1
но вывод, который я получаю:
`-1`
`some-random-number-here`
Это очень простая копия того, над чем я на самом деле работаю, поэтому не беспокойтесь о динамическом размещении (должно быть динамическим) и проверке, возвращает ли оно вначале значение NULL.
Edit:
Как упоминали @xing и @cdarke, моя проблема была с моим malloc. Работает, как и ожидалось.