【发布时间】:2011-02-17 21:03:58
【问题描述】:
我目前正在做一个项目,我需要一个指向某些结构的指针数组。我为操作该数组的函数创建了一个全局变量,以保存指向该数组的指针,这样我就可以使用函数轻松访问它。但是,我遇到了一些问题,指针只是......改变并且不再指向正确的东西。
我这样创建数组:
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 中一样......
我不明白为什么会这样...所以我来请教专家... :)
任何帮助都会很棒... :)
【问题讨论】:
标签: c arrays pointers data-structures