2018년 1월 22일
이번주 월요일에 나는 마이크로소프트 한국지사로 TIPS 6차시 수업을 들으러 갔습니다. 강사는 Tipssoft의 대표이사 김성엽 이사님 이십니다. 대표님은 마이크로소프트 C++프로그래밍 부문 MVP로 활동 하고 계십니다.
이번 수업에서는 포인터를 배웠습니다.
메모리 관리방식 : 운영체제의 메모리 관리방식에 따라 프로그래밍 방법이 달라집니다. 기계어에서는 변수가 위치한 메모리 주소를 통해 변수 값에 접근합니다. 따라서 실제 우리가 선언하는 변수는 컴파일러에게 메모리공간을 만들어 달라고 지시하는 것과 같습니다.
32비트 프로그램, 64비트 프로그램 : 메모리의 크기가 달라집니다. 64비트 운영체제에서는 32비트,64비트 모두 돌아가지만 32비트용에서는 오류가 날 가능성이 큽니다.
포인터 : 변수의 주소를 가지고 있는 변수
포인터의 선언 : (자료형) * (포인터이름);
*의 또다른 의미 – 번지 지정 연산자 : *뒤에오는 포인터변수가 가리키는 대상에 특정 명령을 내리는 것입니다.
위 사진에서 *ptr을 사용하는 경우와 그냥 ptr을 사용하는 경우가 있습니다.
*ptr의 경우는 ptr이 가리키는 메모리내용에 명령을 내리는 것입니다. ptr은 자신에게 특정명령을 내리고 보통 &연산자를 이용한 주소저장 명령을 내립니다.
함수에서의 포인터 사용 : 모든 변수가 한 함수에서 선언되어서 움직이는 것이 아니기 때문입니다. 따라서 일반 변수만을 사용 할 경우 return을 제외하고 함수내부에서 일어나는 변화를 다른 함수에서 인식을 못하게 됩니다. 이는 변수만을 이용하는 것의 한계이고, 고급프로그램을 만들기 힘들다는 것을 시사합니다. 따라서 함수들을 포인터로 매게하면 서로 독립적인 공간을 유지함과 동시에 필요한 명령은 처리할 수 있다는 장점이 있습니다.
포인터를 사용하는데 나오는 실수 : ptr과 *ptr의 헷갈림으로 주소를 지정해야 하는 곳에 상수값을 대입하고, 상수값을 대입해야 하는곳에 주소를 지정하는 오류를 범합니다.
따라서 const라는 키워드를 이용하여 실수를 미연에 방지할 수 있습니다. 이는 포인터에대해 완벽히 모르기 때문에 일어나는 일이라고 생각합니다.(저는 잘 사용하지 않습니다)
역시나 전문적이시군요.
저는 알아보기가 힘들어서 잠깐 인사만 하고 갑니다.
편안한 저녁 되시길 바래요^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit