В настоящее время я работаю над проектом, в котором мне нужен массив указателей на некоторые структуры. Я создал глобальную переменную для функций, которые управляют этим массивом, чтобы хранить указатель на этот массив, чтобы я мог легко получить к нему доступ с помощью функций. Однако я сталкиваюсь с некоторыми проблемами, когда указатель просто ... изменяется и больше не указывает на нужную вещь.
Я создаю массив следующим образом:
void initPQueue()
{
EventPTR pQueue[qSize];
int i;
float t;
for(i = 1; i < qSize; i++)
{
t = getNextRandomInterval(getL());
pQueue[i] = createEvent(t);
}
setpQueue(pQueue);
buildpQueue();
}
Я использую setpQueue (pQueue) для установки глобальной переменной .... вот так ...
void setpQueue(EventPTR* pQueue)
{
pQueuePTR = pQueue;
}
Глобальная переменная объявлена как:
EventPTR* pQueuePTR;
Вот моя структура: (в моем .h файле .. atm)
struct event {
float eTime;
double sTime;
int status;
};
typedef struct event Event;
typedef struct event* EventPTR;
До этого момента все было прекрасно. Мой buildpQueue даже работает правильно ... с использованием pQueuePTR .... однако ... Я решил создать несколько тестовых функций, чтобы просто вывести массив pQueue, и вот где он стал уродливым ...
void outTest()
{
int i;
printf("\n\n");
for(i = 0; i < qSize; i++)
{
if(pQueuePTR[i] != NULL) printf("%f ", pQueuePTR[i]->eTime);
else printf("NULL ");
}
}
Это дает мне вывод, как указатель на массив содержит нулевые значения, когда он не ... эта функция и последние две находятся в одном файле. Я даже поместил этот цикл в setpQueue, и он работал нормально ... как и должно быть в outTest ...
Я не понимаю, почему это может сделать это ... поэтому я пришел спросить экспертов ...:)
Любая помощь будет отличной ...:)