数据结构C语言实现中
///
/// 存放中转链式栈
///
typedef struct operand
{
char x;
struct operand* next;
}LStackOperand,*LinkStack;
第一种:void InitStack(LinkStack* top)
第二种:int StackEmpty(LinkStack top)
用typedef给结构体设计了两个类名,LinkStack为指针类名。为什么再定义变量时能够定义两种类的变量,一种LinkStack top,另一种LinkStack top(没有*)。这两种有什么区别吗?
当然有区别了,在InitStack(LinkStack * top)函数中,可以在函数内修改 top指向的指针地址,比如
LinkStack top;
InitStack(&top);
而InitStack函数内有 ( * top) = (LinkStack) malloc(sizeof(LStackOperand));
如果参数是LinkStack top的话,写成 InitStack(top)是无法实现top指针地址的修改的