2014-01-20 111 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