2011-01-29 6 views
0

저는 C#/java 프로그래머입니다. 포인터를 많이 사용하지 않았습니다. 나는 그것이 배우기에 충분할만큼 유용한 것인지 궁금 할뿐입니다.포인터를 사용하는 목적은 무엇입니까?

누군가가 왜 포인터가 정확히 C#/java 프로그래머에게 도움이 될지 설명 할 수 있습니까?

+3

참조 : http://stackoverflow.com/questions/5727/what-are-the-barriers-to-understanding-pointers-and-what-can-be-done-to-overcome/5754#5754 –

+0

포인터 자바 프로그래머들에게 어떤 것도 도움이되지 않을 것이다. –

+1

Thems fightin 'words – sova

답변

3

이미 포인터를 사용하고 있습니다. Java의 비 기본 변수 (모든 경우에 익숙하지 않지만 C#도 있음)는 객체에 대한 포인터입니다.

아마 pointer arithmetic에 대해 물어볼 것입니까?

+1

+1 예, Java와 C#에서 항상 포인터를 사용하고 있습니다. 'Object' 타입의 변수는 실제로 메모리 내의 객체 인스턴스에 대한 포인터입니다. 이 언어는 영리한 추상화를 사용하여 "포인터"에 대한 세부적인 내용을 숨 깁니다. * 포인터의 작동 방식을 이해하는 것은 매우 교육적 일 수 있습니다. Java 또는 C#에서의 실용적인 유용성은 무엇입니까? 제한된. 일반적으로 다른 방법이 있습니다. –

+0

매우 기본적인 의미에서 후드에서 일어나는 일에 대해 좀 더 자세히 설명해 줄 수 있습니까? 이 '교육적'일을하는 것이 가치가 있는지 알고 싶습니다 ... – locoboy

+0

요점은 Java/C#에서 객체를 조작하는 방법을 알고 있다면 포인터가 포인터에 대해 이미 알고 있다는 것입니다. 왜냐하면 포인터는 이러한 언어로 객체를 참조하는 방법이기 때문입니다. 질문에 대해 명확히 이해한다면 포인터에 대해 이해하지 못한다고 느낄 때 도움이 될 것입니다. –

2

포인터를 사용하면 실제로 RAM에 수동으로 액세스 할 수 있으므로 (Java 또는 "안전한"C#에서는 불가능 함) 포인터를 사용하면 사물의 할당 방식을 제어 할 수 있습니다.

C# 및 Java에서 객체를 "보유"하는 변수는 실제로 메모리에있는 객체에 대한 포인터 (약칭 참조)를 보유하고 있으므로 클래스를 "참조 유형"이라고 부릅니다. 대조적으로 구조체는 "값 유형"이므로 구조체 변수는 실제로 데이터 자체를 보유합니다. 포인터를 사용하면 동적으로 메모리를 할당하고 액세스 할 수 있으며 컴파일러의 부분에 대한 안전성 검사를하지 않아도 잠재적 인 성능 향상을 얻을 수 있지만 코드를 확인하고 정확성을 확인하는 데 부담을줍니다.

이유는 약간 미묘합니다. 메모리를 사용하려면 컴파일 할 때 필요한 메모리의 크기를 알아야하기 때문에 포인터가 필요합니다. 물론 사용자가 20MB를 처리하도록 설계된 100MB 파일을 프로그램에로드하려고 시도하지 않을 것이라는 것을 확신 할 수는 없으며 다른 한편으로는 그렇게 많이 예약 할 수는 없습니다 처음부터 모든 사람이 모든 자원을 예약한다면 어떻게 될지 생각해보십시오. 따라서 운영 체제에 메모리 블록을 할당하고 첫 번째 바이트의 주소를 알려줄 것을 요청하면 포인터가 필요합니다. (메모리 매핑 된 파일과 장치와 같은 포인터는 다른 용도로 사용되지만 게시물이 길어질 수 있습니다.)

성능이 중요한 응용 프로그램과 버그가 많은 응용 프로그램은 모두 포인터를 많이 사용합니다. :)

1

포인터를 이해하면 실제로 컴퓨터에서 일어나는 일과 그곳에서 벌어지는 일, 그리고 프로그램이 실제로 어떻게 작동하는지 이해할 수있을 것입니다.

신경 쓰지 않고 Java 프로그램을 작동 시키려면 건너 뛰십시오. 그렇지 않으면 그들이 프로그래밍에 관해 당신을 도울 것이라고 생각합니다.

관련 문제