代码之家  ›  专栏  ›  技术社区  ›  BenAlabaster

如何以C_显示指针地址?

  •  13
  • BenAlabaster  · 技术社区  · 14 年前

    我没有做任何指针,因为我一直在C语言编程和我的C++天是很久以前。我想我应该更新我的知识,只是和他们一起玩,因为这里还有一个问题。我完全理解它们,但是我不知道如何将指针的地址写入控制台…

    char c = 'c';
    char d = 'd';
    char e = 'e';
    
    unsafe
    {
        char* cp = &d;
        //How do I write the pointer address to the console?
        *cp = 'f';
        cp = &e;
        //How do I write the pointer address to the console?
        *cp = 'g';
        cp = &c;
        //How do I write the pointer address to the console?
        *cp = 'h';        
    }
    Console.WriteLine("c:{0}", c); //should display "c:h";
    Console.WriteLine("d:{0}", d); //should display "d:f";
    Console.WriteLine("e:{0}", e); //should display "e:g";
    

    使用 Console.WriteLine(*cp); 给出指针地址的当前值…如果我想显示实际地址怎么办?

    5 回复  |  直到 7 年前
        1
  •  18
  •   Darin Dimitrov    14 年前
    Console.WriteLine(new IntPtr(cp));
    
        2
  •  4
  •   Joel Coehoorn    14 年前

    记住,使用托管代码,垃圾收集器可以自由地在您身上移动东西。确保 大头针 如果你的地址很重要的话,把你的目标放下。

        3
  •  0
  •   Yevhen    14 年前

    将指针转换为字节类型。

        4
  •  0
  •   bwest    9 年前
    char* cptr;
    char achr = 'a';
    cptr = &achr;
    string strcptr = Convert.ToString((long)cptr, 16);
    Console.WriteLine("Ox{0} is the char ptr hex address", strcptr);
    
        5
  •  0
  •   MarcioAB    7 年前
    char c = 'c';
    
    unsafe
    {
      Console.WriteLine("0x{0:x}", (ulong)&c);
      Console.WriteLine($"0x{(ulong)&c:x}");
    }
    

    这将显示类似…0x123ABC(两次)