栈初始化问题
疑问:在学习数据结构(参考高教社 和严蔚敏两版),有个疑问,各种数据结构 初始化函数里几乎都没有对指向数据结构的指针本身初始化,编译也不会报错(TC 还有Cfree编译均能通过)学习指针,都强调指针必须初始化,才能使用,但是在指针作为参数传递时,似乎却不管用了
typedef struct Node{
int data;
struct Node *next;
}LinkQueueNode;
typedef struct{
struct Node *front;
struct Node *rear;
}LinkQueue;
初始化链队函数里 直接 Q->font= ..malloc(..); 并没对Q进行初始化
又如栈初始化函数,也并没有对S初始化,但是确实正确的
Void InitStack(Seqstack *S)
{
S->top=-1;
}
下面程序展示了小弟的疑问,小弟那里理解错了,还望达人指点
#include<stdio.h>
#include<stdlib.h>
typedef struct{
char elem[10];
int top;
}Seqstack;//栈存储结构
void InitStack(Seqstack *S) ——>改成: void InitStack(Seqstack *S)
{ {
Seqstack *P; S->top=-1;//这样却能通过编译 难道这里S被编译器自动初始化了吗
P->top=-1;//这里会出现内存写错误(cfree 会报错) }
}
main()
{
Seqstack *S;
InitStack(S);
printf("%d ",S->top);
system("pause");
return 0;
}
[ 本帖最后由 rs369007 于 2009-11-1 19:22 编辑 ]