2014-01-20 112 views
3

我正在练习在C#中使用指针(通过不安全的代码)。所以现在,我只想将“”连接到一个int *,所以我可以将它用作参数Console.WriteLine()如何将字符串连接到int *?

static void Main(string[] args) 
    { 
     fullOfPointers(); 
    } 
    static unsafe void fullOfPointers() 
    { 
     int value = 10; 
     int* adress = &value; 
     Console.WriteLine(&value+"");//error 
     Console.ReadLine(); 
    } 

但编译器说运算符'+'不能用于int *和string。所以我该怎么做?

+2

你试图处理指针时,你不明白基本的C#类型?也许你打算在相反的方向上连接? – Magus

+0

我不明白哪些基本知识? – stackptr

+0

主要是一个字符串不是数字,不能添加到一个int,但一个int可以连接到一个字符串,这是你所做的相反。只是引用类型与值类型的概念使得试图将一个字符串附加到int奇怪的地方。 – Magus

回答

6

如果你想指针的内存地址..它强制转换为int

Console.WriteLine((int)&value); // will produce random memory address 

如果你想的address值..取消引用指针:

Console.WriteLine(*address); // produces 10 

我有绝对不知道为什么你想连接任何东西与string ..这是没有必要的。

+0

但Consolw.WriteLine()接受一个字符串作为参数。 – stackptr

+0

它也需要一个'int' ...它有大约30多个重载。 –

0

&value返回值的address,你想literal.If要adress's值用字符串来连接一个内存地址,您需要使用*address,所以你可以尝试:

Console.WriteLine(*adress + " asd"); 

输出将是:

10 asd