关于数组指针的问题(20分)

  • 主题发起人 主题发起人 guifuli
  • 开始时间 开始时间
G

guifuli

Unregistered / Unconfirmed
GUEST, unregistred user!
var
S: string;
p: array[0..7] of Char;
A: array[0..7] of Byte;
begin
S := 'guifuli';
StrPCopy(p, S);
A := p
//我的想法是把p和A指向同一内存空间,但出错
end;
 
不同类型的数据怎么可以这样哩?
 
那你告诉我,该怎么处理?
 
var
S: string;
p: array[0..7] of Char;
A: PChar;
begin
S := 'guifuli';
StrPCopy(p, S);
A := p
//我的想法是把p和A指向同一内存空间,但出错
end

 
to fu_qi_ming:
你的那种用法我也知道。我现在的想法是把一个字符数组转换成一个字节数组,当然数组里面的元素都是一样的,只不过字符数组是用Char表示,而字节数组是用Byte表示,所以我想直接把字符数组的首地址赋给字节数组的首地址,结果出错。我也可以遍历每个数组元素来赋值,但我想问一下有没有更简便的方法?
 
Char和Byte有区别吗?
 
其实存储的东西都一样,你想把它变成什么类型都可以。
能不能成功,就不一定了。
 
var
S: string;
p: array[0..7] of Char;
A: array[0..7] of Byte absolute p;
i: Integer;
begin
S := 'guifuli';
StrPCopy(p, S);

A[0] := Ord('G');
A[1] := Ord('U');
A[2] := Ord('I');
A[7] := 0;
ShowMessage(p);
end;
 
Object Pascal跟C不同,是强类型的编译器,你可以试试无类型指针。Pointer。
 
var
S: string;
p: array[0..7] of Char;
A: array[0..7] of Byte;
begin
S := 'guifuli';
StrPCopy(p, S);
move(p, A, 8)
end;
 
数组名只是一个引用
 
type
TBytes = array [0..0] of Byte;
PBytes = ^TBytes;
var
S: String;
P: PBytes;
X: Byte;
begin
S:= 'guifuli';
P:= @S[1];
X:= P^[0];
...
end;
 
to wisenow:
谢谢!问题解决了,但是用 move 应注意什么呢?
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
622
import
I
后退
顶部