堆栈中关于指针返回的问题!怪事!

after_sss 2006-04-18 08:49:08
关于指针的一个问题:近来遇到一个问题,实在搞不懂是为什么,故拿出来请各位高手指教!
下面的这个程序是在vc++ 中运行的,不能运行成功,但在TC中就能成功!
程序的功能很简单,一看就明白,就不必我说了吧!
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
typedef struct{
char key;
}element;
element stack[10];
int top=-1;
void add(int *top,element item){
if (*top>=MAX-1){
printf("stack is full!\n");
return;
}
stack[++(*top)]=item;
}
element deletes(int *top){
if(*top<=-1){
printf("stack is empty!\n");
exit(0);
}
(*top)--;
return stack[*top+1];
}
void main(){
char key;
element s;
printf("input a char:\n");
scanf("%c",&key);
s.key=key;
add(&top,s);
s=deletes(&top);
printf("%c",s.key);
}




但如果把其中的函数改为
element deletes(int *top){
if(*top<=-1){
printf("stack is empty!\n");
exit(0);
}
return stack[(*top)--];
}
就可以成功!,不知道为什么!,我觉得两个函数应该一样的吧!


...全文
208 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jiana 2006-04-19
  • 打赏
  • 举报
回复
vc没有问题,鉴定完毕
jixingzhong 2006-04-19
  • 打赏
  • 举报
回复
程序没有什么问题 ~
YFY 2006-04-19
  • 打赏
  • 举报
回复
将准备看看,先上班了。
lei001 2006-04-18
  • 打赏
  • 举报
回复
没有问题呀,编译可以通过,
输入一个字符,可以打印出这个字符呀
leaway211 2006-04-18
  • 打赏
  • 举报
回复
报什么错?

70,037

社区成员

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

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