对指针用法不太明确,该怎么处理

对指针用法不太明确自己变了一个栈函数,但有个地方一直不明白typedef struct LinkStack{LinkStackPtr top

对指针用法不太明确
自己变了一个栈函数,但有个地方一直不明白
typedef struct LinkStack
{
LinkStackPtr top;
int count;
}LinkStack;

void InitStack(LinkStack *s)
{
s = (LinkStack *)malloc(sizeof(LinkStack));
s->count = 0;
s->top = NULL;
}


int main(void)
{
LinkStack *s;
InitStack(s);
}
我不明白为何这样无法完成对栈的初始化,count没有被赋值,请高人指点!



[解决办法]

C/C++ code
void InitStack(LinkStack **s){*s = (LinkStack *)malloc(sizeof(LinkStack));*s->count = 0;*s->top = NULL;}int main(void){LinkStack *s;InitStack(&s);}
[解决办法]
LinkStack* InitStack(void)
{
LinkStack *s;
s = (LinkStack *)malloc(sizeof(LinkStack));
s->count = 0;
s->top = NULL;
return s;
}

int main(void)
{
LinkStack* s = InitStack();
}
[解决办法]
基本设计原则之一:

在被调函数中改变实参的值,必须传递实参的地址,无论实参是值变量还是指针变量。

你要修改“实参”的值,就传“实参”的地址,它是指针变量,就传指针变量的地址----so,type *(*形参)

type (*形参)是实参自己的类型,另一个*表示传它的地址

调用函数的表示形式就是function(&实参)----传它的地址,无论它是什么
=================
再完整些
被调函数中:
type *(*形叁)----这是形参定义,表示接受实参的地址
 *形参= ------------这是通过指向实参的指针修改实参

调用函数中
function(&实参)-----这是传实参的地址