728x90
반응형

포인터 3

[C#] OCX에 포인터 데이터 넘기기

C#에는 기본적으로 포인터를 지원하지 않는다. 포인터를 사용하기 위해서 unsafe를 이용하던데, 기본적으로 사용하지 말라고 한 것을 굳이 사용해야 싶어서 구글링 해서 여기저기 검색해 보았다. 가장 간단한 방법으로 C++에서도 사용하던 것인데 포인터의 주소를 넘기는 것이다. 포인터의 주소는 32bit에서는 long으로 64bit에서는 __int64 혹은 long long으로 넘겨주곤 했다. C#은 모두 long long이다. 그렇기 때문에 OCX의 메서드를 만들 때에도 LONGLONG으로 만들어야 한다. void CtopgraphCtrl::AddArrayDataPtr(LPCTSTR name, LONG length, LONGLONG xPtr, LONGLONG yPtr, LONGLONG zPtr) 포인터의 ..

Program Language/C# 2022.10.26

[C++] Pointer & const

C++에서 상수를 나타내기 위해서 두 가지 방법을 제공한다. constexpr : 컴파일 시 평가 const : 수행 중 수정 불가 기본적으로 constexpr의 역할은 compile-time 평가를 가능하게 하고 보장하는 반면, const의 주요 역할은 인터페이스에서 불변성을 지정하는 것이다. 여기서는 인터페이스의 사양에 대해 주로 다룬다. 많은 객체들은 초기화 이후 값이 변경되지 않는다. Symbolic constants는 코드에서 직접 literal을 사용하는 것보다 유지 관리가 더 쉬운 코드로 이어진다. 많은 포인터들이 읽히지만 결코 쓰지 않는 경우가 많다. 대부분의 함수 파라미터들은 읽히지만 쓰지는 않는다. 초기화 후 이러한 불변성 개념을 표현하기 위해 객체 정의에 const를 추가할 수 있다...

[C++] 포인터(Pointer)

T, T*은 T의 포인터의 표현이다. 즉, T*의 변수는 T 객체의 주소를 가질 수 있다. char c = 'a'; char∗ p = &c; // p holds the address of c; & is the address-of operato 포인터에 대한 기본 연산은 역참조, 즉 가리키는 객체를 참조하는 것이다. 이 작업을 간접 참조라고도 한다. 역참조 연산자는 접두사로 '*'을 사용한다. char c = 'a'; char∗ p = &c; // p holds the address of c; & is the address-of operator char c2 = ∗p; // c2 == ’a’; * is the dereference operator p가 가리키는 객체는 c이고, c에 저장된 값은 'a'이므로..

728x90
반응형