Status InitStack(SqStack **S); **S怎么解释

jerrygj 2006-07-13 03:48:39
Status InitStack(SqStack **S);
s 是定义了的栈,请教**S怎么解释
...全文
1078 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerrygj 2006-07-18
  • 打赏
  • 举报
回复
内存泄漏?
ggyg1121 2006-07-14
  • 打赏
  • 举报
回复
学习了
cdlgz 2006-07-14
  • 打赏
  • 举报
回复
jerrygj() 的例子会导致内存泄漏吧
jerrygj 2006-07-13
  • 打赏
  • 举报
回复
终于明白了,多谢各位
chenhu_doc 2006-07-13
  • 打赏
  • 举报
回复
SqStack *Sa;

InitStack(&Sa); //何必?

//这样传递进去的就是二级指针了,用** 来接收!
jerrygj 2006-07-13
  • 打赏
  • 举报
回复
下面是原程序
typedef int Status ;

struct STU{
char name[20];
char stuno[10];
int age;
int score;
};
typedef struct STU SElemType;

struct STACK
{
SElemType *base;
SElemType *top;
int stacksize;
};

typedef struct STACK SqStack;
typedef struct STACK *pSqstack;

Status InitStack(SqStack **S)
{
(*S)=(SqStack *) malloc(sizeof(SqStack));
(*S)->base=(SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
if(!(*S)->base)exit(OVERFLOW);
(*S)->top=(*S)->base;
(*S)->stacksize=STACK_INIT_SIZE;
return OK;
}

void main()
{

SqStack *Sa;

InitStack(&Sa);
}

帮我通俗的解释一下
open_sky 2006-07-13
  • 打赏
  • 举报
回复
你不用二重指针就不用晕了
就是一个纸包里又包了一个纸包,把它交给函数女士,打开一个纸包,又打开一个纸包,上面写着“我的栈在第二个抽屉里”,函数女士说:“先生你需要改吗?”,”改,改了!“

然后函数女士把最外面的那层纸撇了,就给你一张纸,上面写着“鲍家街43号!”

jerrygj 2006-07-13
  • 打赏
  • 举报
回复
还是不理解
0黄瓜0 2006-07-13
  • 打赏
  • 举报
回复
Status InitStack(SqStack **S); //栈上分配4字节空间保存一个指针,指针指向SqStack*的指针。

如果有 SqStack *ps; InitStack(&ps);那么,函数体中*S=(InitStack*)malloc(sizeof(InitStack));就相当于直接是函数外的ps=(InitStack*)malloc(sizeof(InitStack));
jerrygj 2006-07-13
  • 打赏
  • 举报
回复
Status InitStack(SqStack **S); 是我看到的代码,我不理解**S
chenhu_doc 2006-07-13
  • 打赏
  • 举报
回复
struct
{
//your code;
}SqStack;

调用他的函数里面,
声明: SqStack ssk;
调用函数时用 InitStack(&S); // 取地址传进去,
Status InitStack(SqStack *S); // 用1维指针接收

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧