| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:[求助]栈的问题
取消只看楼主 加入收藏
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
 问题点数:0 回复次数:5 
[求助]栈的问题

#include <stdio.h>
#include <conio.h>
int StackTest()
{
int b=2;
int a=1,*ptr;
int c=3;
ptr=&a;
printf("a的地址是:%d\n",&a);
ptr+=1;
//此处加1,则顺利执行,b的值被置零
//加2 ,弹出错误
//加3,弹出错误
*ptr=0;
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
printf("堆栈已破坏,函数将不能正常返回!");
return 0;
}

int main()
{
int d=9;
printf("d的地址是:%d\n",&d);
StackTest();
printf("d的值是:\n");
printf("%d\n",d);
return 0;
}
&a=1244960,&d=1245052,相差92,为什么会差这么大的空间?
执行的时候,d先入栈,然后pc,sr,bp,然后是StackTest()函数的局部变量b,a,ptr,c,但为什么a和d的在栈中的地址相差那么大呢(92)?

搜索更多相关主题的帖子: int ptr 堆栈 include 
2007-08-03 16:38
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 

什么意思?
难道不是一个程序只有一个栈吗?
请讲详细点阿
。。。


2007-08-03 17:11
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 
连续着呢。。。

2007-08-03 17:31
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 
即使不连续,按我自己的理解,a和d的地址不应该差那么大吧?

2007-08-03 17:36
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 
执行的时候,d先入栈,然后pc,sr,bp,然后是StackTest()函数的局部变量b,a,ptr,c,但为什么a和d的在栈中的地址相差那么大呢(92)?

2007-08-03 17:39
不以物喜
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-8-1
收藏
得分:0 
执行的时候,d先入栈,然后IP,SR,BP,然后是StackTest()函数的局部变量b,a,ptr,c,但为什么a和d的在栈中的地址相差那么大呢(92)?
是栈阿


2007-08-03 19:02
快速回复:[求助]栈的问题
数据加载中...
 
   



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

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