关于栈初始化Run-Time Check Failure #3The variable 'a' is being used without being ini

Zabra 2012-07-14 11:54:23
#include<stdio.h>
#include<stdlib.h>
typedef struct{
long date[100];
int top;
}Stack;

void StackInit(Stack s)
{
s.date[1000]=0;
s.top=-1;
}

bool Empty(Stack s)
{
if(s.top==(-1))
return true;
else false;
}

void Push(Stack s,int n)
{
if(s.top==999)
{
printf("栈已满了/n");
exit(0);
}
s.top++;
s.date[s.top]=n;
}

int Pop(Stack s)
{
long n;
if(Empty(s))
{
printf("栈已空,无法取出元素了/n");
exit(0);
}
n=s.date[s.top];
s.top--;
return n;
}

int StackLength(Stack s)
{
return (s.top+1);
}
int main()
{
Stack a;
long int n;
printf("要求计算多少的阶乘:");
scanf("%ld",&n);
StackInit(a);
while(n>0)
{
Push(a,n);
n--;
}
n=1;
while(StackLength(a)>0)
{
n=n*Pop(a);
}
printf("计算结果为:%ld",n);
return 0;
}

我用的VS2008 编译没错误,但是运行时出现了栈不能初始化问题,我程序中有初始化栈的函数不知道怎么不行,求大侠指点。
...全文
495 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2012-07-15
  • 打赏
  • 举报
回复
long date[100];
s.date[1000]=0;
Eleven 2012-07-15
  • 打赏
  • 举报
回复
把你上面的提供操作Stack的函数改成引用
比如void StackInit(Stack s)
--》
void StackInit(Stack& s)

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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