본문 바로가기
728x90
반응형

포인3

알면 알수록 Hell 타는 포인터? ...ㅠㅠ 실수 형 포인터. 1. 위 소스는 실수를 포인터를 사용 하여 메모리에 어떻게 저장 되는 지를 확인해보기 위해 짠 소스이다. float fnum; 아래에 unshgned char *p = (unsigned char *) &fnum; 이 부분이 포인터를 사용한 부분이며 오른쪽이 (unsigned char *) &fnum; 이란 부분이 약간 뭔가 달라 보일 것이다. 이 부분이 형동등성을 위해 왼쪽의 포인터형 과 동등하게 만들어 주기 위해서 캐스팅을 한것이다. 그리고 fnum =32.125; 로 fnum을 초기화 시켜주고 그 아래에 *(p+0) = 0x00; 라는 부분이 나중에 출력 될때 메모리에 저장 되는 주소이다. 2. tst 파일을 실행 시킨화면이다. fnum에서 입력 되었던 값이 메모리 주소를 입력하여 .. 2012. 5. 8.
오류는 무서버~~ ㅠㅠ 포인터 오류 코드. 1. 위 그림의 소스는 다른 타입의 포인터들을 이용해서 어떻게 되는 지를 보기 위해 일부러 짠 소스이다. 보시다시피 문제 없이 컴파일은 됐지만 아래에 창을 보면 C4133이라는 경고 메시지가 뜬 것을 볼수 있는데 이 C4133경고는 포인터앞의 자료 타입이 맞지 않아서 뜬 것이다. 그런데 3번째 경고를 보면 경고 코드가 다른 것을 볼수 있다. C4047 이코드는 포인터가 잘못 되어서 뜬 것인데, 3번째 경고 메시지를 더블 클릭해서 3번째 코드를 보면 역시 잘 못 된 것이 보인다. &가 inum 앞에 붙어 있지 않다. 2. 타입이 다른 포인터 타입들을 위의 그림 처럼 캐스팅을 하여 수정 하고 3번째 코드에서 빠졌던 &도 같이 삽입하여 수정한 코드를 ctrl+F5키를 눌러 실행시켜 보면 D.. 2012. 5. 4.
포인터의 다른 매력?...$_$! 포인터의 또 다른 사용법. : 포인터는 메모리에 접근하는 방법이다. 1. 위 그림은 포인터를 캐스팅을 통해 메모리 주소를 진짜 메모리 주소로 변경하여 그 값을 8로 초기화 시키는 것이다. 캐스팅을 하지 않으면 지금 메모리 주소는 그냥 정수 일 뿐이어서 8이란 값이 들어 가지 않고 오류가 뜬다. 그래서 캐스팅을 하여 정수를 진짜 메모리 주소로 변경하여 8을 그 주소에 넣는 것이다. 2. F10키를 눌러 Break Point를 실행 시키면 Memmory 창에서 소스에 넣었던 주소에 8이라는 값이 들어 간것을 확인 할수 있다. 이런 방법으로 메모리에 들어 간 값을 변경 할 수 있다. 2012. 5. 4.
728x90
반응형