df001 发表于 2011-3-29 08:45:41

指针与数组的问题?求助

var
abc:array of integer;
x:^integer;

begin
abc:=5;
abc:=6;
x:=@abc;
x:=10;
//x指向abc数组的首地址,印象中C++里面是可以这样表示的..但Delphi这样写出错,该怎么写???

Form1.Label1.Caption:=IntToStr(x^);
Form1.Label2.Caption:=@abc;
//这里我想abc数组的首地址给Label2.Caption也出错,,该如何写???

深白海豚 发表于 2011-3-29 08:45:59

你这个纯粹是概念的混淆。

x:^integer;

这里,你声明的是一个整数的指针。

x:=@abc;

这里你怎末又能把一个整数数组变量的指针赋给它哪??

C++也不支持这样的语法。

delphi :

var
abc:array of integer;
x:^integer;

begin
abc:=5;
abc:=6;
x:=@abc;    //一个整数
x^:= 10;
   
或者:
delphi:
type
      cde = array of integer;//声明一个整形数组类型

var
abc: cde;
x: ^cder;          //整形数组指针

begin

x:=@abc;      //OK,类型匹配
x:=10;   

C:

int abc;
int * p;

p = &abc;    //同样
*p = 10;
p ++;                //访问第二个
*p = 12;

从这里可以看出,C和PASCALL实际上使用指针模式是相同的,只是C的语法更灵活一些。

深白海豚 发表于 2011-3-29 08:46:16

x=abc;

看清楚这句,为什莫能成功?而 x=&abc不行。

是因为C默认把一个数组变量名作为他的第一个元素的地址的。也就是说:

x= abc 实际上就是 x= &abc 的变形。
页: [1]
查看完整版本: 指针与数组的问题?求助