论坛: 编程破解 标题: 谁能帮我更好的了解堆栈 复制本贴地址    
作者: lxlmf [boadi]    论坛用户   登录
谁能帮我更好的了解堆栈
告诉我为什么要用堆栈


[此贴被 lxlmf(boadi) 在 08月15日11时23分 编辑过]

地主 发表时间: 04-08-15 09:55

回复: bug_me [bug_me]   论坛用户   登录
So many books can help you!

B1层 发表时间: 04-08-15 11:14

回复: lxlmf [boadi]   论坛用户   登录
有没有搞错啊,我是要你把你理解堆栈的思路告诉我,也让我更能通俗的理解它(你不要动不动就说英语,虽然我看的懂,但不一每个人都能看)

B2层 发表时间: 04-08-15 11:15

回复: bug_me [bug_me]   论坛用户   登录
如果要说理解的思路,我说会想每个人说的都比书上很长,而且肯定也是废话一大堆
因为偶的表达没书本好,也没那么专业,不然我就去写教材了
至少你也应该说点具体的困惑,比如具体某个程序的实现里你有什么问题?
象我这样刚入门的有空回复你的帖,否则真正有独到见解的是不会去理会你这样的问题
记住:你问的问题越专业,回复你的帖也就越到点,一针见血!


B3层 发表时间: 04-08-15 11:40

回复: Garu [syshunter]   版主   登录
堆栈:
请看下面的代码运行与退出
代码:

#include <stdio.h>

static i=0,j=0;

void stack(void)
{
    while(i<3)
    {
        i++;
        j++;
        printf("%d 进入堆栈 \n",i);
        stack();
    }
   
    printf("%d 退出堆栈\n",j--);
}

void main(void)
{
    stack();
   
}


寒~``这么个小程序我调试了半天


[此贴被 Garu(syshunter) 在 08月15日12时46分 编辑过]

B4层 发表时间: 04-08-15 12:45

回复: bug_me [bug_me]   论坛用户   登录
TO:GARU



你可不要把人家误导了哟~~~~等下还以为那就是堆栈结构呢

TO:楼主[友情提示]
上面那个只是一个FILO的理解程序




B5层 发表时间: 04-08-15 14:21

回复: lxlmf [boadi]   论坛用户   登录
我门在汇编里为什么要用堆栈传递参数,有什么好处,可不可以举个汇编程序的例子啊

B6层 发表时间: 04-08-16 11:41

回复: 286 [unique]   版主   登录
TO lxlmf:
栈适用于先进后出,而不是所有程序都用到栈。
汇编用栈也是考虑到先进后出。但可能你仅从
push ax
push bx
.....
pop bx
pop ax
看不出有什么明显的优点,
建议你看看数据结构,栈部分中的求表达式一例,那里可以充分体现栈在处理中的优势。

B7层 发表时间: 04-08-16 12:54

回复: lxlmf [boadi]   论坛用户   登录
你们能帮我举个更好的例子吗?


B8层 发表时间: 04-08-16 13:07

回复: 286 [unique]   版主   登录
还是自己看书吧。

B9层 发表时间: 04-08-16 13:11

回复: Garu [syshunter]   版主   登录
递归不是栈的形式? 我得回去再把基础看看了。。。

B10层 发表时间: 04-08-16 19:04

回复: lxlmf [boadi]   论坛用户   登录
好啦,不想说就算了,何必勉强呢?

B11层 发表时间: 04-08-17 13:48

回复: Garu [syshunter]   版主   登录

#include <stdio.h>

char ft[]="%d %d\n";
int a=1,b=2;
void main(void)
{
    __asm
    {
        mov eax,a
        push eax              //a入栈
        mov eax,b
        push eax              //b入栈
        mov eax,offset ft
        push eax              //ft入栈
        call printf          //调用printf
        pop ebx              //ft出栈
        pop ebx              //b出栈
        pop ebx              //a出栈
    }
}
用VC编译下看看

不是不想帮你,而是你的问题太笼统了,让人不知道从哪回答。

B12层 发表时间: 04-08-17 19:03

回复: 286 [unique]   版主   登录
TO Garu:
递归是递归,栈是栈。前者是程序调用的一种技巧,后者是一种数据结构。
一般来说,调用子程序时的实现都是通过栈来实现的,递归是调用子程序的一种特例,当然大部分也都是通过栈来实现。但把二者等同就不伦不类了。就象排序一般是在数组中实现的,但你不能说排序就是数组呀。


B13层 发表时间: 04-08-18 10:01

回复: TomyChen [quest]   版主   登录
确实很多东西不是不想教也不是勉强,只是...更多时候只能靠你理解了,读书N遍。。。其义自现,咳...



B14层 发表时间: 04-08-18 11:25

回复: lxlmf [boadi]   论坛用户   登录
或许是吧,那最后个问题,在DOS调用的时候回有些入口参数比如:AH=?,DS:DX=?中的
DS:DX是不是DS:[DX]的意思

B15层 发表时间: 04-08-18 15:40

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号