青亭浅 2023-11-01 15:11 采纳率: 88.2%
浏览 35
已结题

顺序栈构造空栈的这两种不同写法中&S与*S,S.base与S->base的不同之处?

int InitStack(SqStack &S)
{
S.base = (int *)malloc(STACK_INIT_SIZE*sizeof(int));
if (!S.base) exit(OVERFLOW);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}
后者是我在网上找到的:
int InitStack(SqStack *S)
{
S->base = (int *)malloc(STACK_INIT_SIZE*sizeof(int));
if (!S->base) exit(OVERFLOW);
S->top = S->base;
S->stacksize = STACK_INIT_SIZE;
return OK;
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2023-11-01 16:12
    关注

    int InitStack(SqStack &S) ‘&‘ 是引用符,&S 理解为在 int InitStack() 函数里对实参变量直接使用或作用,引用只是一个别名而已。
    int InitStack(SqStack *S) SqStack *S 是指针变量,实参为变量的地址,在 int InitStack() 函数里通过指向实参变量的地址的指针 S->base对实参作用。
    它们的差别归结为"指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名,引用不改变指向。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月29日
  • 已采纳回答 5月21日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上