[置顶] 栈/入栈/出栈顺序(c语言)-linux
说明:
1、栈底为高地址,栈顶为低地址。
2、入栈顺序:从右到左。
解释1:栈在内存中的结构
[注:0x00 到 0x04之间间隔4个地址]
入栈:指针先指向0x10,从高地址向低地址方向填数值,最终指针在0x00位置结束。[栈底 到 栈顶][高地址 到 底地址]
出栈:从0x00位置开始遍历到0x10位置。[栈顶 到 栈底][底地址 到 高地址]
解释2:程序入栈顺序
#include <stdio.h>
int t(int e0, int e1, int e2 )
{
int a=1;
int b=2;
int d0=4,d1=44,d2=444; printf("e2:%3d, 0x%x\n", e2, &e2);
printf("e1:%3d, 0x%x\n", e1, &e1);
printf("e0:%3d, 0x%x\n", e0, &e0); printf(" a:%3d, 0x%x\n", a, &a);
printf(" b:%3d, 0x%x\n", b, &b); printf("d0:%3d, 0x%x\n", d0, &d0);
printf("d1:%3d, 0x%x\n", d1, &d1);
printf("d2:%3d, 0x%x\n", d2, &d2); int i;
int * p = &a;
for(i=0;i<5;i++)
printf("%3d, 0x%x\n", *(p-i),p-i);
return 0;
} int main()
{
t(5, 55, 555);
return 0;
}
程序结果:
e2:555, 0xbf8c92c8
e1: 55, 0xbf8c92c4
e0: 5, 0xbf8c92c0
a: 1, 0xbf8c92ac
b: 2, 0xbf8c92a8
d0: 4, 0xbf8c92a4
d1: 44, 0xbf8c92a0
d2:444, 0xbf8c929c
1, 0xbf8c92ac
2, 0xbf8c92a8
4, 0xbf8c92a4
44, 0xbf8c92a0
444, 0xbf8c929c
上面的结果就是程序入栈顺序:遵循从右到左,从上到下入栈。
[注释:e0:0xbf8c92c0 -> a:0xbf8c92ac 之间缺少0xbc 0xb8 0xb4 0xb0,总的16个地址,该地址可能是用于函数建设用 ]
[置顶] 栈/入栈/出栈顺序(c语言)-linux的更多相关文章
- 写一个栈,实现出栈、入栈、求最小值,时间复杂度为O(1)
#-*-coding:utf-8-*- ''' 需求:写一个栈,实现出栈.入栈.求最小值,时间复杂度为O(1) 思路:通过两个栈实现,一个栈stack,一个辅助栈min_stack,记录stack中的 ...
- 【NOJ2024】入栈序列和出栈序列
入栈序列和出栈序列 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交:293 测试通过:68 比赛描述 给出入栈序列 ...
- Python 根据入栈顺利判定出栈顺序
1.读取入栈,出栈数据: 2.把数据分别转化成整数列表: 3.新建栈列表,用入栈数据进行压栈:如果栈列表不为空,并且栈顶层数据为出栈的元素:删除栈列表的顶层数据: 4.如果栈列表不为空,说明栈列表里面 ...
- [置顶] hdu 4699 2个栈维护 or 伸展树
hdu 4699 Editor 题意:对一个数列进行操作,光标位置后面插入一个权值为x的数,删除光标前的那个数,光标左移一位,光标右移一位,求到k位置的最大的前缀和.. 注意这里的k是在光标之前的, ...
- 弹出框,先弹出遮罩有透明度灰色100%高宽,置顶z-index:999---再弹出框最顶部z-index:9999
<div class="mask"></div> <div class="maskbox"> <form id=&qu ...
- [置顶] 在Visual Studio 2008上调试C语言程序
C语言的地位和重要性就不用说了,但,很多人学习C语言,还在使用Visual C++ 6.0,甚至还有人使用Turbo C,很无语,只说一句吧:“OUT了". 让我们体验一下华丽的Visual ...
- [置顶] a+=1/a=+1/a-=1区别-c语言
1.解释 a+=1/a=+1/a-=1 含义 a+=1 实质等于 a += 1,也就是等于 a = a + 1: a=+1 实质等于 a = +1:[因为运算符中没有=+,很多人误以为是 a =+ 1 ...
- [置顶] JNI之java传递数据给c语言
1.首先创建 DataProvider类: package com.pl.ndkpassdata; public class DataProvider { static{ System.loadLib ...
- HDU 1022 Train Problem I[给出两个长n的串,入栈和出栈顺序,判断入栈顺序是否可以匹配出栈顺序]
Train Problem I 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 As the new term comes, the Ignatius Train Sta ...
随机推荐
- UVa 11077 (循环分解 递推) Find the Permutations
把{1, 2, 3,,, n}叫做自然排列 本题便是求有多少个n元排列P要至少经过k次交换才能变为自然排列. 首先将排列P看做置换,然后将其分解循环,对于每个长度为i的循环至少要交换i-1次才能归位. ...
- UVa 12563 (01背包) Jin Ge Jin Qu hao
如此水的01背包,居然让我WA了七次. 开始理解错题意了,弄反了主次关系.总曲目最多是大前提,其次才是歌曲总时间最长. 题意: 在KTV房间里还剩t秒的时间,可以从n首喜爱的歌里面选出若干首(每首歌只 ...
- Relativelayout属性
// 相对于给定ID控件 android:layout_above 将该控件的底部置于给定ID的控件之上; android:layout_below 将该控件的底部置于给定ID的控件之下; andro ...
- Java 知识点:序列化
首先明确一点:默认的序列化方法速度很慢,因为需要对整个对象和他的类都进行保存,因此我们建议自定义序列化格式. ObjectInputStream和ObjectOutputStream 用途 Objec ...
- 转载RabbitMQ入门(6)--远程调用
远程过程调用(RPC) (使用Java客户端) 在指南的第二部分,我们学习了如何使用工作队列将耗时的任务分布到多个工作者中. 但是假如我们需要调用远端计算机的函数,等待结果呢?好吧,这又是另一个故事了 ...
- hashCode之一--两个对象值相同,有相同的hash code
两个对象值相同(x.equals(y) == true),则一定有相同的hash code. 这是java语言的定义: 因为:Hash,一般翻译做“散列”,也有直接音译为"哈希" ...
- iOS已发布应用中对异常信息捕获和处理
iOS已发布应用中对异常信息捕获和处理 iOS开发中我们会遇到程序抛出异常退出的情况,如果是在调试的过程中,异常的信息是一目了然,但是如果是在已经发布的程序中,获取异常的信息有时候是比较困难的. iO ...
- asp.net(class0625)
1 SiteMapPath 面包屑导航控件 要想使用这个控件,必须创建一个站点地图,也就是 web.sitemap web.sitemap是一个xml文件: 根节点必须是:<siteMap> ...
- python中struct模块及packet和unpacket
转自:http://www.cnblogs.com/gala/archive/2011/09/22/2184801.html 我们知道python只定义了6种数据类型,字符串,整数,浮点数,列表,元组 ...
- Chapter 2 Build Caffe
Caffe for windows 的build药按照一定的顺序进行. ============================================================ 先以b ...