每次看到某个数据结构的时候,有两个指针,一个起始,一个结束,一直没想明白为是起始与结束,不是起始加数量,是怎么操作的?

procedure PrintList(const BeginPointer,EndPointer:PDWORD);
var
  I:Byte;
  dBegin,dEnd:DWORD;
begin
  dBegin:=PDWORD(BeginPointer)^;
  dEnd:=PDWORD(EndPointer)^;
  for I := 0 to (dEnd-dBegin) div 4 do
  begin
    ShowMessage(IntToStr(dBegin+I*4));
    /// 10 14 18 22 26 30
  end;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  dBegin,dEnd:DWORD;
begin
  dBegin:=10;
  dEnd:=30;
  PrintList(@dBegin,@dEnd)
end;

下次再遇到记得补贴一下汇编代码

时间: 2024-08-05 16:31:23

每次看到某个数据结构的时候,有两个指针,一个起始,一个结束,一直没想明白为是起始与结束,不是起始加数量,是怎么操作的?的相关文章

设计四个线程,其中共两个线程每次对j增加1,另外两个线程每次对j减少1。循环100次,写出程序。

package cn.usst.DataTest6; /** * 设计四个线程,其中共两个线程每次对j增加1,另外两个线程每次对j减少1.循环100次,写出程序. * @ * */ public class DataTest6 { private int j; public static void main(String[] args) { DataTest6 dt = new DataTest6(); Inc inc = dt.new Inc(); Dec dec = dt.new Dec()

编写一个程序, 四个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1,要求使用内部类

/**  * @author laishengfeng  * @2014-8-27  * @TODO 编写一个程序,  四个线程,其中两个线程每次对j增加1,  * 另外两个线程对j每次减少1(要求使用内部类线程)  */ public class Test {   public static void main(String[] args) {   MyThread mt = new MyThread();  //MyThread对象   mt.new InnerThread1().start

设计四个线程,当中共两个线程每次对j添加1,另外两个线程每次对j降低1。循环100次,写出程序。

package cn.usst.DataTest6; /** * 设计四个线程,当中共两个线程每次对j添加1,另外两个线程每次对j降低1.循环100次,写出程序. * @ * */ public class DataTest6 { private int j; public static void main(String[] args) { DataTest6 dt = new DataTest6(); Inc inc = dt.new Inc(); Dec dec = dt.new Dec()

学习数据结构和算法的两个利器

数据结构和算法的重要性想必各位在江湖上早就有所耳闻.它对我们最直接的影响就是面试,一般来说,程序员一面都会涉及数据结构和算法知识,尤其是当前找工作比较难的情况下,各个公司会更加重视对候选人基本能力的考察.另外的影响是工作,以我为例,最开始在一家小公司做大数据的时候,由于数据量较大而计算资源不足,所以需要想尽各种办法优化软件的性能.最难解决的问题就是空间搜索效率,当时用了kd-tree这种数据结构,以及最短路径算法(SPFA).当然大部分情况下像这种常见的算法调用现有的包即可,但有些时候需要结合业

数据结构(七)两栈共享空间

一.栈的顺序存储的一个很大的缺陷就是必须事先确定数组存储空间大小,万一不够用了,就要用编程手段来扩展数组的容量,非常麻烦. 二.对于一个栈,也只能尽量考虑周全,设计出合适大小的数组来处理:但是对于两个相同类型的栈,可以做到最大限度地利用其事先开辟的存储空间来进行操作. 三.如果有两个相同类型的栈,为它们各自开辟了数组空间,极有可能是第一个栈已经满了,再进栈就溢出了,而另外一个栈还有很多存储空间.所以两栈共享空间的思想是:让一个栈的栈底为数组的开始端,即下标为0处,另一个栈的栈底为数组的末端,即下

两个线程同时调用一个函数会出现什么情况?

最近在研究多线程,然后突然想到如果两个线程同时访问一个函数的话,要不要加锁呢,加锁怎么加,不加又怎样这样的问题..然后去网上找了些帖子学习学习...... 上面的代码明显执行串了!!!! 函数本身只是代码,代码是只读的,无论多少个线程同时调用都无所谓,因为是只读嘛.但是函数里面总要用到暑假 ,如果数据属性线程级别(比如函数形参-->局部变量-->存在栈上-->每个线程都有自己的栈),那么同时调用是没关系的,因为用的都是本线程的数据;但是如果函数用到一些全局数据,比如全局变量,根据堆内存首

Android工作两年之后的第一个App--天真无谐

一.前言 好长时间没写blog了,主要还是工作上的事有点多,周末又得在家开发自己的app,所以时间真的不够用了,当然今天这篇文章主要就要说一下,工作两年的我如何从产品角度去做一个app,以及app的发布流程等. 二.支持我 在开始讲解这个项目之前,希望能够先去各大市场下载一个apk看看,首先是为了支持我一下,其次呢就是我在后面会介绍一些功能和技术实现,所以先使用一下,这样会找到对应的功能点,谢谢 二维码扫描下载: 1.豌豆荚市场:搜索:天真无谐 PC上的链接:http://www.wandouj

火狐浏览器打开后出现两个主页,其中一个为hao123

最近Firefox出问题了,每次打开都出现两个主页,一个自己设置的,一个是hao123. 起初以为是主页被篡改了,去选项里看也都正常,就是正常的主页. 恢复默认设置也不顶用. 网上找了一些方法,包括该注册表之类都不管用. 其中看到过一个说是打开的快捷方式并不是Firefox,而是hao123的快捷方式.我想这不可能吧, 我的快捷方式固定在任务栏的,怎么篡改的. 后来一想,确实是这么回事:每次通过快捷方式打开浏览器,一个是火狐主页,另一个是一个新的网页!而主页被篡改应该是直接出现被篡改后的主页呀!

说明如何用一个数组A[1...n]来实现两个栈,使得两个栈中的元素总数不到n时,两者都不会发生上溢。注意PUSH和POP操作的时间应为O(1)。

校招开始了,发现自己数据结构,Algorithms的知识都还给老师了.喵了个呜的! <算法导论>开啃吧~ 从第三章数据结构开始吧~ 10.1-2 : 如何用一个数组A[1...n]来实现两个栈,使得两个栈中的元素总数不到n时,两者都不会发生上溢.注意PUSH和POP操作的时间应为O(1). 解:思想是,建一维数组,两个栈stack1和stack2分别从数组A[0]和A[N-1]开始push,栈指针相遇时,两个栈中元素总数为n. 在思考怎么用java 实现,晚些时候 上代码吧~