user-0 提问: 一个有问题的程序——含有数组的结构体如何初始化？

回复:
user: user-0
content: 引用 10 楼 a515360208 的回复:[quote=引用 8 楼 eltonzhang 的回复:] [quote=引用 6 楼 a515360208 的回复:] [quote=引用 3 楼 bEst_02 的回复:] [quote=引用 2 楼 bEst_02 的回复:] 声明指针时，请初始化为NULL；  void main() {     queuePointer aVQ;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  }   void main() {     queuePointer aVQ = NULL;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  } [/quote] 这样也有问题的，调用函数后，aVQ是什么还是什么，并且你这样函数调用产生了内存泄露[/quote] 不会吧。aVQ是个指针应该能够改变的。内存泄露如何发生能详细说一下吗？谢谢！[/quote]  VQ=(queuePointer)malloc(sizeof(struct queue));  调用结束后，没有可以指向VQ分配的地址空间了，因此产生了内存泄露，你单步调试就知道了[/quote] 是的，您说的完全正确。我知道问题所在了，谢谢！

user: user-1
content: 引用 8 楼 eltonzhang 的回复:[quote=引用 6 楼 a515360208 的回复:] [quote=引用 3 楼 bEst_02 的回复:] [quote=引用 2 楼 bEst_02 的回复:] 声明指针时，请初始化为NULL；  void main() {     queuePointer aVQ;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  }   void main() {     queuePointer aVQ = NULL;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  } [/quote] 这样也有问题的，调用函数后，aVQ是什么还是什么，并且你这样函数调用产生了内存泄露[/quote] 不会吧。aVQ是个指针应该能够改变的。内存泄露如何发生能详细说一下吗？谢谢！[/quote]  VQ=(queuePointer)malloc(sizeof(struct queue));  调用结束后，没有可以指向VQ分配的地址空间了，因此产生了内存泄露，你单步调试就知道了

user: user-0
content: 引用 7 楼 eltonzhang 的回复:[quote=引用 3 楼 bEst_02 的回复:] [quote=引用 2 楼 bEst_02 的回复:] 声明指针时，请初始化为NULL；  void main() {     queuePointer aVQ;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  }   void main() {     queuePointer aVQ = NULL;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  } [/quote] 谢谢您的意见。但这样以后仍然会出错。[/quote] 出错的是这句  printf("%d ",aVQ->vertexQueue[i]);

user: user-0
content: 引用 6 楼 a515360208 的回复:[quote=引用 3 楼 bEst_02 的回复:] [quote=引用 2 楼 bEst_02 的回复:] 声明指针时，请初始化为NULL；  void main() {     queuePointer aVQ;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  }   void main() {     queuePointer aVQ = NULL;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  } [/quote] 这样也有问题的，调用函数后，aVQ是什么还是什么，并且你这样函数调用产生了内存泄露[/quote] 不会吧。aVQ是个指针应该能够改变的。内存泄露如何发生能详细说一下吗？谢谢！

user: user-0
content: 引用 3 楼 bEst_02 的回复:[quote=引用 2 楼 bEst_02 的回复:] 声明指针时，请初始化为NULL；  void main() {     queuePointer aVQ;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  }   void main() {     queuePointer aVQ = NULL;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  } [/quote] 谢谢您的意见。但这样以后仍然会出错。

user: user-1
content: 引用 3 楼 bEst_02 的回复:[quote=引用 2 楼 bEst_02 的回复:] 声明指针时，请初始化为NULL；  void main() {     queuePointer aVQ;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  }   void main() {     queuePointer aVQ = NULL;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  } [/quote] 这样也有问题的，调用函数后，aVQ是什么还是什么，并且你这样函数调用产生了内存泄露

user: user-1
content: 程序问题很多，函数返回值没注意，指针没初始化， LZ对指针还不太熟悉，多看看指针相关内容啊

user: user-2
content: aVQ是一个未初始化的指针，不知道指向哪里。 然后传给VQ。那么VQ根本就没有空间，调用的VQ->又指向哪里呢。全都是未知数啊。 设断点调试。注意要先初始化指针。

user: user-3
content: 引用 2 楼 bEst_02 的回复:声明指针时，请初始化为NULL；  void main() {     queuePointer aVQ;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  }   void main() {     queuePointer aVQ = NULL;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  }

user: user-3
content: 声明指针时，请初始化为NULL；  void main() {     queuePointer aVQ;     int i;      InitQueue(aVQ);      for(i=0; i<SIZE; i++)         printf("%d ",aVQ->vertexQueue[i]);  }

user: user-4
content: aVQ指向何处，为指向的对象分配空间了吗？