以前学过c, 对于指针参数与非指针参数分得特别清楚, 可是现在在delphi中调用api时感觉有些迷惑.
例如: api函数: BOOL SetSystemTime( CONST SYSTEMTIME *lpSystemTime);
该函数的参数应该是个指针类型, 可是我在delphi中调用时传递非指针参数时却能正常使用:
var MyTime:TsystemTime;
...
    MyTime.wYear:=2007;
    MyTime.wMonth:=09;
    MyTime.wDay:=01;
    SetSystemtime(MyTime);
...
MyTime不是指针啊. 这是为什么? 是不是我的理解有误?  多谢各位

解决方案 »

  1.   

    Delphi中的参数类型如果是一个类。
    它都是通过指针来传递的。
      

  2.   

    >Delphi中的参数类型如果是一个类。
    >它都是通过指针来传递的。这儿说的类是不是不限于class定义的? 是指结构类型吗? 因为Tsystemtime不是类啊
      

  3.   

    Delphi的编译器好,所以会为你完成变换比如Something^.someproperty^.Some会被自动变成Something.Someproperty.Some,你不论写那种形式编译器都认得不过,这也让很多人被Danny和Anders害了。比如你写的那个代码,我从来不敢那样写。我一直会自己手工写@ ^等等,我怕出错的。