2014-01-20 2 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는 문자열에 연결될 수 있습니다. 이는 수행 한 작업의 역순입니다. 참조 유형과 값 유형의 개념만으로 이상한 문자열을 문자열에 첨부하려고합니다. – 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, 당신은 당신이 adress's 값으로 원하는 literal.If 당신이 시도 할 수 있도록, 당신은 *address를 사용할 필요가 문자열로 메모리 주소를 연결하는 시도 :

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

출력을 것이다 be :

10 asd