看一个指针用法的例子:   
ar
  X,Y:Integer;
  P:^Integer;
  cStr:String;
 begin
  X:=17;
  P:=@X;   //书上说指针是一个无符号整数,把X的地址赋给P,此时P里存的是一个什么值?一个整数?
           //我用str(P,cStr)说是类型不符了。STR(X,cStr)就可以,所以P也不是一个整数啊...
           //那此时P的值究竟是多少?怎么获取?我想看看地址究竟是什么东西。
  Y:=P^;
end;

解决方案 »

  1.   

    http://topic.csdn.net/u/20120307/09/17642a31-e6c6-4969-946f-e982d19f348a.htmlLz看看这个
      

  2.   


    var
      X,Y:Integer;
      P:^Integer;
      cStr:String;
    begin
      X := 17;
      P := @X;
      Str(P^,cStr); //P是指针,你要访问其中的值,要对它解引用
      ShowMessage(cStr);
    end;
      

  3.   

    变量是用来装数据的 相对常量,变量可以改变 比如y:=x+1这样的式子里X和Y就是变量 1就是常量指针变量是用来存放变量的地址的 当访问一个指针变量时 会通过它访问到它所存的地址所在的变量引用别人的话
      

  4.   

    举个通俗的例子:
    x:='某某市某某县某某小区某某门牌号'    
    这是一个地址,它指向一个名叫'张三'的人。
    那么当P:=@X时,我要看到P的值就是'某某市某某县某某小区某某门牌号' 
    当要获取P这个地址的值时,P^就能得到'张三'。
      

  5.   

    P的值就是X的地址: Integer(P)
    P指向的值就是X的值:P^打个比方,内存就好比数组a: array[0..9] of Byte;
    现在假设X就是a[3],即a[3]=X=17,那么P的值就是X的地址3,而P指向的值就是a[3]
      

  6.   


    地址 内存的地址  比如内存中有100字节空间 我给这100个字节空间标号1 2 3 4 5 等等 
    1 指的就是那100个字节空间中的第一个字节  1就是一个内存地址 
    我要在1这个字节空间里存放数据 17 那1的地址内容就是17
    变量 要有类型 可说明我要存放的数据要用到多少个字节空间 比如 如果是 char 可能是这个变量占1个字节空间
    如果是 int 可能占2个字节空间 那么存放变量中指定的值就要占两个字节空间 
     a int    a=17   如果机器分配给 a的内存地址是 3 4两个字节空间  那么 @a=3 ,@3+1 =4  3 4 的地址都用来存放数据 17 
      

  7.   

    str(Integer(P),cStr) 就可以了
      

  8.   

    本质是无符号整数,但你不能直接这么操作,delphi语法相当严谨
      

  9.   

    这样你就明白了。
    var
      x:Integer;
      p:^Integer;
      st:string;
    begin
      x := 17;
      p := @x;
      ShowMessage(IntToStr(Integer(p)));//p的值是地址,可能是1254201这么个东西。
      ShowMessage(IntToStr(p^));//p^是p指向地址保存的值,就是17
    end;
      

  10.   

    内存好比一栋居民楼,指针好比你家的门牌号。
    门牌号虽然本质上一个无符号整数,delphi的严谨语法不允许你直接把他等同于整数来处理。你需要做显式的类型转换,将这个门牌号转换为一个整数。