| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 478 人关注过本帖
标题:关于函数传值的问题!
只看楼主 加入收藏
郁闷→成仙
Rank: 2
等 级:论坛游民
帖 子:12
专家分:27
注 册:2010-1-10
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:2 
关于函数传值的问题!
这是我写的一个顺序栈,功能很简单只有,进栈和出栈
代码如下:
程序代码:
#include<stdio.h>
#include<stdlib.h>

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OVERFLOW 1
#define OK 1
#define ERROR 0

typedef int Status;
typedef int SElemType;

typedef struct{
  SElemType *base;
  SElemType *top;
  int stacksize;
}SqStack;

//构造一个空栈
Status InitStack(SqStack &S)
{
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;
}
//取栈顶元素
Status GetTop(SqStack &S,SElemType e)
{
if(S.base==S.top) return ERROR;
e=*(S.top-1);
return OK;
}
//进栈
Status Push(SqStack &S,SElemType &e)
{
if(S.top-S.base>=S.stacksize)
{S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(S.base) exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
//出栈
Status Pop(SqStack &S,SElemType &e)
{
if(S.base==S.top) return ERROR;
e=*--S.top;
return OK;
}
//判断空栈
int stackempty(SqStack S)
{

 if(S.base==S.top)  return 1;

 else return 0;

 }

//输出栈元素
void OutputStack(SqStack &S)
{
int e;
while(!stackempty(S))
{
Pop(S,e);
printf("%d  ",e);
}
}

//主函数
void main(){
int e=1;
SqStack S;
InitStack(S);
printf("请输入要入栈的元素(以0结束):\n");
while(e)
{
scanf("%d",&e);
if(!e) break;
Push(S,e);
}
printf("\n出栈:\n");
OutputStack(S);

}
问:
当我调用OutputStack(S);
我想知道Pop()函数里的e是如何传入OutputStack()中,经printf("%d  ",e);打印出来的。
不是函数结束后,空间立刻释放了,return也没有返回e,那e为什么可以传过去呢?
我当时无意加上去的,结果却能通过,我想不通原理,求达人指教!
搜索更多相关主题的帖子: 传值 函数 
2010-08-18 00:54
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:14 
回复 楼主 郁闷→成仙
沙发!!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-18 01:14
郁闷→成仙
Rank: 2
等 级:论坛游民
帖 子:12
专家分:27
注 册:2010-1-10
收藏
得分:0 
回复 2楼 jack10141
求解释

LX 也求解释!
2010-08-18 01:57
快速回复:关于函数传值的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013073 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved