zoukankan      html  css  js  c++  java
  • @指针、Cardinal()、Integer()、指针取值解析

    指針本身只是一個編號(即也是一個地址),它還要指向一個地址。故它存储的內容是個地址!

    假设pstr是一个字符指针(PString)类型的指针变量:pstr:PString;

    则:

    1.@pstr可以取得指针本身的地址值。

    2.Cardinal(pstr)、Integer(pstr)、pstr 都可以取得指针里面存储的那个地址值,区别在于,前2个取得的地址值是十进制(用%d展示),最后那个取得的地址值是十六进制(用%p展示)。

    3.pstr^可以取得指针里储存的地址的字符值。

    procedure TForm1.Button3Click(Sender: TObject);
    var
      ss,s1,s2:string;
      Cardinal1:Cardinal;//Cardinal和Longword一樣是4字節32位無符號整數,範圍都是0~4294967295。
      pstr:PString;
      //指針本身只是一個編號(即也是一個地址),它還要指向一個地址。故它的內容是個地址!
    begin
      ss:='ABCD';
      ShowMessageFmt('%p , %p',[@ss,@Cardinal1]);//0018F580,0018F574
      Cardinal1:=Cardinal(ss);//變量Cardinal1存儲的是ss字符串的起點位置!因為'位置'是一個0~4294967295之間的數字,所以能賦給Cardinal1變量。
      //Cardinal1:=Cardinal(ss[1]);//65
      //Cardinal1:=Cardinal(ss[2]);//66
      //Cardinal1:=Cardinal(ss[3]);//67
      //Cardinal1:=Cardinal(ss[4]);//68
      ShowMessageFmt('%p , %p',[@ss,@Cardinal1]);//0018F580,0018F574
      pstr:=@SS;//pstr指向ss這個字符串的位置。
    
      {問:'Cardinal1=%d'表示啥? 表示ss的字符串的起點位置??
       答:Cardinal1按%d來讀取其本身時,不同時刻得到的值是會變的,如4533116、4533028等,
           說明它表示一個地址值。}
    
      s1:=Format('Cardinal1=%d,Cardinal1本身的地址為:%p, pstr儲存的內容為:%p',[Cardinal1,@Cardinal1,pstr]);//Cardinal1是個變量,所以能用@取它的地址。
      s2:=Format('Cardinal1里的SS的值為:%s,pstr本身的地址為(@pstr):%p,pstr儲存的內容為(Cardinal(pstr)):%d,pstr儲存的內容為(Integer(pstr)):%d,pstr儲存的內容為:%p,pstr的值為:%s',[PString(@Cardinal1)^,@pstr,Cardinal(pstr),Integer(pstr),pstr,pstr^]);
      {要取到Cardinal1 裡面的ss的值的話,要這樣寫:PString(@Cardinal1)^ ,其中,
      @Cardinal1是取到Cardinal1的地址,PString()是將該地址轉化為PString類型的指針,
      PString()^ 是取到該指針的值。}
    
      ShowMessage(s1);//'Cardinal1=4533140,Cardinal1本身的地址為:0018F574, pstr儲存的內容為:0018F580'
      ShowMessage(s2);//'Cardinal1里的SS的值為:ABCD,pstr本身的地址為(@pstr):0018F570,pstr儲存的內容為(Cardinal(pstr)):1635712,pstr儲存的內容為(Integer(pstr)):1635712,pstr儲存的內容為:0018F580,pstr的值為:ABCD'
    end;

     stringpchar很特殊,以后研究。。。。。

     

     

     

     

     

  • 相关阅读:
    第十五周作业
    十三周作业
    第十三周上机作业
    第十二周作业
    第十二周作业
    第十一周作业
    第十一周上机作业
    第十次上机作业
    第九周上机作业
    安卓第一周
  • 原文地址:https://www.cnblogs.com/168-h/p/14663402.html
Copyright © 2011-2022 走看看