• CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다.
  • CSE207 수강생이 아니여도 편안하게 질문하세요.
  • 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다.

제목[re]함수 포인터를 통한 지정2019-04-16 06:29
작성자 Level 10

*p = 3 의 의미는 "포인터 변수 p가 주소값을 가지고 있을때, 해당 주소값의 메모리로 가서, 그곳에 3을 저장한다" 입니다. 즉, p 변수는 주소값을 가지며, 해당 주소값에 저장된 값을 바꾸었을 뿐 p 변수 자체에 저장된 주소값은 바뀌지 않고 보존됩니다.


강의노트의 함수 포인터는 이와 다릅니다. 강의 노트의 func는 함수 포인터로 마찬가지로 주소값을 저장하는 포인터 변수입니다. 여기에 추가로 알아야할 부분은 "배열의 이름이, 해당 배열을 구성하는 첫번째 element의 주소값"이라는 의미와 유사하게, "함수의 이름은, 해당 함수의 code가 저장된 컴퓨터 메모리의 주소값"이라는 점입니다. 따라서 add() 함수의 이름 add는 이미 주소값을 가지고 있으니, 이를 "원래 주소값을 저장하는" 함수 포인터 변수 func로 저장한 것입니다.


결론적으로 *p = 3하면, p 포인터 변수에 저장된 주소값은 바뀌지 않습니다. func = add하면 add 함수의 주소값으로 func 변수의 주소값 내용을 변경합니다.

댓글
이전함수 포인터를 통한 지정2019-04-16
다음포인터 앞에 변수형2019-04-16