对delphi的指针不熟,请问如下所示的c代码的等价delphi形式是什么样的?byte *a;
byte *b;......//初始化a,bfor(i=0;i<10;i++){
*(a+i)=*(b+2*i);
}写成delphi形式大概是怎么样的?
byte *b;......//初始化a,bfor(i=0;i<10;i++){
*(a+i)=*(b+2*i);
}写成delphi形式大概是怎么样的?
解决方案 »
- 在普通打印机山用很长的纸打印很长的图,中间无间断,必须连续
- 如何在DELPHI中修改ACCESS密码
- 请推荐几本Delphi6的网络开发的好书!
- 链接服务器中的表可以用索引吗
- 关于记录类型的动态数组长度设置问题
- 如何解决bitbtn透明问题,急急急!
- QuickRep中放置QRExpr控件,在编辑统计函数时可它就是找不到我放在 DataModule 中的Query---------------------------------------------
- 不需要让用户按Alt+Enter、Ctrl+Alt+Del、Ctrl+Esc等功能键
- \u Unicode 转换 问题
- 程序员大本营2000什么时候上市?
- dbgrid如何显示复杂的列表
- 为什么不能Hook到菜单点击的消息WM_COMMAND呢?
a: Pointer; // 或者任何其他指针类型
begin
GetMem(a, 10); // 分配10字节
PInteger(a)^ := Integer(Form1); // 将form1(其实Delphi中所有的类都可以认为是指针)
// 保存到a[0..3]中
// 这里是和C的区别, Delphi中需要进行指针类型转换,
// 主要是为了"欺骗"编译器, 免得程序无法编译通过.
(PChar(a)+SizeOf(Integer))^ := 'B'; // a[4]中保存一个字符'B'
....
P: ^Integer;
X: Integer;
begin
P := @X;
X := 10;
P^ := 20; 如果定义了一个指针P,那么P表示指针所指向的内存地址,而P^表示内存所存储的实际内容。因此,在上面的代码中, P^ 与X相等请问上例中指针P^是表示存储的内容,P是内存地址怎么理解,如果我要用指针改变X的值,是p:=2 还是p^:=2
在具体开发中,指针一般基什么情况下使用!
请教了.要用指针改变X的值用p^:=2
指针就是内存的地址,是间接访问数据的手段。主要有两中用途:1,做为传递地址 2 构造有意义的数据收集结构。
实际开发的时候指针用途很多的,比如调用API的时候就经常用到。
Integer(P): 可以得到指针地址.要改变指针内容肯定是: P^ := 2;
a:pbyte
b:pbyte;(a+1)^:=(b+1)^编译出错
procedure TForm1.Button2Click(Sender: TObject);
var
a:pbyte;
b:pbyte;
i:integer;
begin
new(a);
new(b);
for i:=0 to 9 do
begin
a^:=b^;
inc(a);
inc(b,2);
end;
dispose(a);
dispose(b);
end;
因为a和b是初始化是制定到别的地方去了类似与这种
a:=@...
b:@...然后才是(a+1)^:=(b+3)^但就是编译不过。
必须这样写
inc(a);
inc(b,3)
a^:=b^;