指针与数组的问题?求助
varabc: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也出错,,该如何写??? 你这个纯粹是概念的混淆。
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的语法更灵活一些。 x=abc;
看清楚这句,为什莫能成功?而 x=&abc不行。
是因为C默认把一个数组变量名作为他的第一个元素的地址的。也就是说:
x= abc 实际上就是 x= &abc 的变形。
页:
[1]