指向结构体的指针类型和结构体类型的区别(50分)

  • 主题发起人 主题发起人 lhdqz
  • 开始时间 开始时间
L

lhdqz

Unregistered / Unconfirmed
GUEST, unregistred user!
interface
use
windows,
.
classes;

type pstudent^ =student;
student =record
name:string;
age:integer;
end;
function printname(astudent:student):integer;

implement
function printname(astudent:student):integer;
begin
end;
这里传入的是student类型好呢?还是pstudent好呢?
就是说结构体类型与指向结构体类型变量的指针的区别在哪里呢?
 
效果都一样啊!结构体指针就是指向结构体的,具体变量的值是在一个内存区域的。
就好像WINDOWS的快捷方式一样的
 
不一样吧?传指针实际是传地址,传结构体应该是复制整个结构体吧。
 
pstudent好 指针指向地址就行
 
传指针就是个指针,传结构体就是一个结构体,大小和值都不一样,传结构体会在函数内部重新构造一份参数的副本. 而传指针类型则在函数内部访问原结构体.下面是例子.
type pstudent = ^student;
student = record
name: string;
age: integer;
end;

function printname(astudent:student):integer;
function printname2(astudent:Pstudent):integer;

implementation

{$R *.dfm}
function printname(astudent:student):integer;
begin
ShowMessage(inttostr(Integer(@astudent.age)));
end;

function printname2(astudent:Pstudent):integer;
begin
ShowMessage(inttostr(Integer(@astudent.age)));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a:student;
begin
ShowMessage(inttostr(Integer(@a.age)));
printname(a);
printname2(@a);
end;
 
2楼正解 传值与传址而已
传址:指向地址可以改变实参值,其实是指向地址内容改变
传值:有个变量副本,不会改变实参内容
 
多人接受答案了。
 
传什么都是一样的
 
后退
顶部