2013-12-09 2 views
1

저는 포인터에 대한 지식이 거의없는 Java 개발자입니다. 나는ULONGLONG을 16 바이트 배열에 할당 한 결과는 무엇입니까?

ULONGLONG passedValue; 
BYTE myArr[16]; 
memset(myArr, 0x00, sizeof myArr); 
*((ULONGLONG *) myArr) = passedValue; 

을 나는 memset 메서드 호출 (사이즈 16)를 myArr 바이트 배열을 채우는 것을 이해하지만 0으로 : 나는 (다른 사람이 쓴) 내가 이해하기 위해 노력하고있어 그 다음 C++ 코드를 마지막 줄이 뭔지 모르겠다.

MSDN에 따르면 ULONGLONG is 8 bytes ... myArr은 16 바이트입니다. 마지막 문이 실행 된 후 myArr에 무엇이 있습니까?

+0

** iv **의 정의가 없습니다. – David

+0

myArr과 passedValue의 관계는 무엇입니까? –

+0

죄송합니다. .. 붙여 넣기 오류가 발생했습니다. 위의 원본 게시물을 업데이트했습니다. 마지막 줄은 * ((ULONGLONG *) myArr) = passedValue; – user2869520

답변

0

이 용어 (ULONGLONG *) myArr은 myArr을 ULONGLONG 유형의 포인터로 변환합니다.

그런 다음 *((ULONGLONG *) myArr)은 포인터가 가리키는 위치의 값입니다.

그리고

*((ULONGLONG *) myArr) = passedValue; 

myArr BYTE는 어레이의 첫번째 8 바이트에 passedValue 할당한다.

passedValue 00 00 00 00 00 00 00 00 
^^^^^^^^^^^ 
8 bytes 
+0

빠른 답변 주셔서 감사합니다 :). – user2869520

+0

@ user2869520 : 환영합니다. – David