首先举一个例子
#include<stdio.h> #include<stdlib.h> typedef struct { int data[MaxSize]; //保存栈中的元素 int top; //栈顶指针 }SqStack; //初始化栈 void InitStack(SqStack *st){ st = (SqStack* )malloc(sizeof(SqStack)); st->top = 0; printf("初始化栈完成\n"); } int main(){ SqStack *St ; InitStack(St); printf("%d",st->top); }
这是一个顺序栈的初始化,但运行会发现,最后一条printf语句并没有执行,即使我们将栈的指针St作为参数传给了初始化函数,初始化函数对其分配了空间,但是由于malloc重新对地址进行了赋值,所以之后的操作也就不是对原来参数的操作了。