인프런 커뮤니티 질문&답변

궁금돌이님의 프로필 이미지
궁금돌이

작성한 질문수

독하게 시작하는 C 프로그래밍

C언어랑 관계있는지..

해결된 질문

작성

·

309

0

음 클로저와 c언어의 함수 포인터

비슷한 느낌인데 차이점은 무엇일까요

클로저란 이름처럼 전역 변수처럼 사용하지만 클로저 함수만 접근 가능하기 떄문에 클로저란 이름을 쓴거 같은데 이점이 함수 포인터와 다른 점일까요...

 

C언어 포인터 질문과 관계가 있는지 몰르겠지만 왠지 클로저 구현을 한다면 포인터를 사용한게 아닐까 싶은생각이 문득 들어서 한번 여쭤봅니다..

답변 1

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

개인적인 생각으로 클로저와 함수 포인터는 전혀 다른 것이며 심지어 비슷하지도 않습니다. C언어의 함수 포인터는 함수에 대한 참조자 입니다. C언어는 객체지향 언어가 아니므로 함수를 개체로 이해 할 수는 없겠습니다. 다만 C언어의 모든 함수는 정적인 요소 입니다. 즉, 프로세스가 소멸하기 까지 함수 자체가 사라지는 일은 없습니다. 그리고 굳이 네임스페이처럼 묶음이나 접근성으로 분류 하자면 C언어의 함수는 모두 전역 함수 입니다.

또한 C언어의 포인터는 가리키는 대상이 소멸한다 해도 이를 인지할 수 있는 방법이 없습니다. 참조자 포인터와 포인터가 가리키는 대상의 생명주기는 완전히 분리되어 있으며 심지어 포인터 값이 변경될 수도 있습니다. 그러나 클로저의 경우 가리키는 대상과 참조간의 생명주기를 보장해주는 결과를 가져옵니다. 문법적인 접근제어 부분을 빼더라도 이는 자동화된 메모리 관리나 보안에 있어 큰 장점을 제공합니다.

말이 길어졌습니다만...결과적으로 둘은 분리해서 생각하는 편이 좋겠다는 것으로 마무리 하겠습니다. 참고하시기 바랍니다. :)

궁금돌이님의 프로필 이미지
궁금돌이

작성한 질문수

질문하기