views:

193

answers:

3

I've not done any pointers since I've been programming in C# - and my C++ days were long ago. I thought I should refresh my knowledge and was just playing around with them because of another question on here. I understand them all okay, but I can't figure out how to write the pointer's address to the console...

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";

Using Console.WriteLine(*cp); gives me the current value at the pointer address... what if I want to display the actual address?

A: 

Convert your pointer to byte type.

TGadfly
+7  A: 
Console.WriteLine(new IntPtr(cp));
Darin Dimitrov
To correctly work with pointers within C# take usage of the IntPtr class
Oliver
+3  A: 

Remember that with managed code the garbage collector is free to move things around on you. Make sure to pin your object down if your in a situation where the address matters.

Joel Coehoorn
Thanks Joel, I hadn't considered that yet. Like I said, I was just playing, I haven't had any real requirement to use pointers in my C# projects.
BenAlabaster