指针使用的小问题。不一定只在DELPHI中。 (100分)

X

x_coffee

Unregistered / Unconfirmed
GUEST, unregistred user!
据说C#里已经没有指针了
 
C

chnplzh

Unregistered / Unconfirmed
GUEST, unregistred user!
指针?这应该是C语言或C++的特色之一,也是它为什么更接近汇编语言的
原因之一。指针,真正的程序员肯定是回避不了的。
 
M

masoft

Unregistered / Unconfirmed
GUEST, unregistred user!
该用的时候你就会了。不用急着学。
 

王承武

Unregistered / Unconfirmed
GUEST, unregistred user!
不用特意去学,到时候自然而然的就会了
 
D

dcshi2001

Unregistered / Unconfirmed
GUEST, unregistred user!
是阿,我现在都不知道什么是指针了
 
L

LiuFution

Unregistered / Unconfirmed
GUEST, unregistred user!
Dephi中用指针有时候会让你头痛,不就是动态寻址吗,很多时候不用的,想做底层的就去研究研究,数据库开发时就用静态变量算了!(只限于变量)
 
I

iceiceberg

Unregistered / Unconfirmed
GUEST, unregistred user!
好久没有用指针了,连链表怎么定义都忘了。:(
哪位好心给我几行代码?最简单的就行了。谢谢。

另外,要动态插入和删除对象,不能不用指针吧,用数组不太麻烦了吗?
 

张辉明

Unregistered / Unconfirmed
GUEST, unregistred user!
非用不可时,再用呀
 
D

dcshi2001

Unregistered / Unconfirmed
GUEST, unregistred user!
太繁琐,不用也摆
 
C

Carlsberg

Unregistered / Unconfirmed
GUEST, unregistred user!
>>据说C#里已经没有指针了
还是有的,只是由编译器代劳了。

在Delphi中,当我们引用一个继承自TObject的类实例的时候,其实我们用的是指针,可是编译器不需要你加上指针标记。大多数结构指针也是如此,包括PChar。计算机语言中没有指针是不可想象的。掌握适度、灵活地运用指针是一个程序员的基本功之一。
 
S

SoftInsect

Unregistered / Unconfirmed
GUEST, unregistred user!
其实在Pascal用指针是很不灵活的,除非在不得已的情况下才用,
少用指针,这或许就是Pascal语言的特点
 

远帆

Unregistered / Unconfirmed
GUEST, unregistred user!
嘿嘿,我觉得有指针可用是件幸福的事。现在在学习如何用basm编程:)
 
X

xeen

Unregistered / Unconfirmed
GUEST, unregistred user!
指针当然是离不开的,不过显示的使用指针确实是越来越少了.

with Memo1 do
begin
end;
不就是在使用指针吗
 
Y

yangying_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
一般应用就用对象吧,如果很底层的算法且要求高效可以考虑使用部分指针,如果是硬件操作估计不用都不行了
 
C

chenglh

Unregistered / Unconfirmed
GUEST, unregistred user!
据说Delphi 8 要取消指针和相关的函数了
象@,ADDR()都不能用
 
W

wr960204

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi8在Borland的网站上有不少消息。但我没看到说要取消指针。
没有显式指针怎么做底层的东西?
还有除非VCL构架不要了,或重写。
 
A

aleyn

Unregistered / Unconfirmed
GUEST, unregistred user!
谁说Delphi的指针不好用,三层结构的自定义PARAMS块,如果用指针来,是最快的.返回数据也一样.
 
W

wql

Unregistered / Unconfirmed
GUEST, unregistred user!
实质的东西:
var
p:^integer;
i:integer;
begin
p:=@i;
p^:=8;
showmessage('I is:'+inttostr(i));
end;
汇编:
p dd 0
i dd 0
i就可以直接存放一个数,而要通过p来访问i,首先要得到i的地址就是

没有编译优化的代码:
push ebx

mov eax,@i
mov p,eax
p:=@i;

nop
mov ebx,p
mov al,8
mov [ebx],al
p^:=8;

pop ebx

所以转了一道弯,嘿嘿!
 
C

chenglh

Unregistered / Unconfirmed
GUEST, unregistred user!
To wr960204:
Delphi pascal要去除指针功能为了满足.net的托管代码对编程语言的要求。
我说的去除指针是指读变量地址,地址偏移量有关的操作,比如读一个object的地址,然后
把这个地址赋给另一个完全不相干的对象指针(如果程序员高兴,还可以在赋值前给指针
加个偏移量)。去除这类操作应该对VCL架构没什么大的影响。

新版Delphi Pascal还会增加static,final 修饰符、嵌套类,名字空间(如uses System.Windows.Forms)等。和现在的java很类似。
 
W

wr960204

Unregistered / Unconfirmed
GUEST, unregistred user!
To chenglh
我还是不信。指针是Pascal和C的一大特色。没有了指针Pascal还能叫Pascal吗?C还能叫C吗?
VC.Net还是有指针的,还是保留有原生代码功能。在VC.Net中指针确实是不安全的,但依然保留了。我想Delphi也不会去掉指针的。因为Borland说Delphi 8 还是保留有原生代码开发能力的。而且去掉指针客户原来的代码岂不是不能用了?不可能的。
 
顶部