배열과 포인터 질문 드려요
글쓴이: impactlife / 작성시간: 목, 2013/09/05 - 12:26오후
class Pat{ public: int nX, nY; }; int main(){ Pat *p; p = new Pat[3]; //1번 p->nX = 1; p->nY = 2; //2번 (*(p+1)).nX = 3; (*(p+1)).nY = 4; //3번 p[2].nX = 5; p[2].nY = 6; cout << p[0].nX << ", " << p[0].nY << endl; cout << p[1].nX << ", " << p[1].nY << endl; cout << p[2].nX << ", " << p[2].nY << endl; delete[] p; getch(); return 0; }
위에서 1번과 2번은 이해가 되는데요.
3번은 조금 헤깔리네요.
3번의 경우 컴파일시 2번으로 자동변환되는거라 이해하고 있는데 맞는건지요?
Forums:
gilgil.net
네, 같습니다.
그런데 2번보다가 3번이 사람이 보기에 더 편하지 않나요? ^^
www.gilgil.net
감사합니다. 다행히 제가 알고 있는게 맞는거군요 ^^
감사합니다. 다행히 제가 알고 있는게 맞는거군요 ^^
같은 코드입니다.
1, 2, 3은 모두 내부적으로는 똑같이 처리되지만 그냥 상황에 따라 표기하는 방식만 다르게 가져갈 수 있다 생각하시면 될것 같네요.
http://assembly.ynh.io/ 여기에다 소스를 쳐보시면 어셈블리로 어떻게 변환되는지 알 수 있습니다. 제가 해본 결과 모두 (사실상) 동일한 방식으로 변환되었습니다.
--
헉뚜~ 이런 좋은 사이트가 있었군요. 알려주셔서
헉뚜~ 이런 좋은 사이트가 있었군요.
알려주셔서 대단히 감사합니다.
포인터와 배열 헷갈리시면, 다시체계적으로배우는
포인터와 배열 헷갈리시면, 다시체계적으로배우는 포인터?인가 그책한번 봐보세요. 그책이 진실 입니다. 하지만, 좀 설명이 장황하긴해서 최적이지 못함이 있죠... 물론, 이보다 더 확실하고 쉬운방법이 있지만, 그건 스스로알아야될 부분입니다. 구지, 디버깅이나 어셈변환아니고 추상이론적으로 해결해야할때까지...
--------------------------------------------------------------------------------
open source, open teaching, 천기누설이 꿈~ 은 개뿔...
--------------------------------------------------------------------------------
<code></code> 블럭을 사용하면 코드를 좀더
<code></code> 블럭을 사용하면 코드를 좀더 쉽게 볼 수 있습니다.
감사합니다
감사합니다.
--
댓글 달기