고생했습니다~ :) 축하해요! 막 끝낸 사람에게 이런 말 하기는 좀 그런데, C 언어는 여러 번 보는 게 효과적이라서 빠르게 한 번 더 보는 걸 추천합니다. ㅎㅎ 그리고 두 번 보고 나면 아래에 링크한 글 참고하셔서 C 언어 무료 온라인 강좌도 참여해보세요. 공부했던 내용도 정리되고 앞으로 무엇을 해야할 지도 알게 될 수 있는 강좌입니다. cafe.naver.com/twlab/90
질문 있습니다! sum.lib가 1번라인 int Sum(int a, int b, void (*pa)(int *)) 2번라인 { if(NULL != pa) (*pa)(&a) 3번라인 return a + b } } 일 때 선생님께서 말씀 하셨듯이 결국 라이브러리 사용자 입장에서는 sum 함수 내부의 코드를 전혀 알 수 없는데 헤더 파일의 함수 원형만 보고 어떻게 기능을 만드는 것인가요?? 사용자의 입장에서는 라이브러리 파일 안에 2번라인이 if(NULL != pa) (*pa)(&a) 인지 if(NULL != pa) (*pa)(&b) 인지 조차도 알 수 없는 경우인데 MyAbsolute 함수를 만들어서 void (*pa)(int *) 인자로 넣어 주었다고 해도 a의 값을 주소로 받아 절대값으로 바뀌는지 b의 값을 주소로 받아 절대 값으로 바뀌는지 아니면 둘 다 바뀌는지 알 수 없지 않나요? 라이브러리 파일안에 sum함수가 어떻게 설계되어 있는지 알 수 없는데 어떻게 기능을 만들 수 있는지 궁금합니다!
이야기하신 것처럼 사용하는 사람은 알 수 있는 방법이 없습니다. 따라서 Sum 함수를 만드는 사람이 함수 코드는 보여주지 않더라도 의도를 주석으로 잘 설명을 남기거나 추가 자료를 만들어서 함수와 함께 제공합니다. 그래서 보통은 글로 적는 것보다는 예시 코드를 함께 적어주는 것이 더 좋습니다.
함수 포인터는 즉, 생산자의 경우의 수를 줄이고, 사용자의 경우의 수를 확장시킨다.
사용자의 니즈를 충족시키고, 굉장한 사업성을 만들어 줬네요. 박수가 절로 나옵니다
함수 포인터의 확장성은 실무자에게 너무 좋은 기능이기 때문에 꼭 마스터하셔야 합니다 :)
한바퀴 돌았습니다. 좋은강의 감사합니다. 두바퀴에서 뵈요.
오웃! 수고하셨습니다 ㅎㅎ
[질문]41:01
int result = SUM(-3, -2, MyAbsolute, NULL);
부분에서 함수를 주소 형식으로 넘겨 주려면 &MyAbsoulute를 써야 하는 것 아닌가요?
함수 포인터를 사용할 때 함수 주소를 사용하기 위해 &MyAbsolute 라고 사용하는게 정석이지만 &를 생략하는 것도 허용됩니다 :)
좋은 강의 감사합니다 열심히 공부하겠습니다
파이팅입니다~ :) 20장까지 다 보셨으면 아래에 링크한 동영상 강좌도 한번 보세요.
blog.naver.com/tipsware/222410958939
위 링크까지 다 보셨으면 제 블로그나 Tipsware Lab 카페를 통해 저에게 상담 신청을 해보세요~ :)
어렵네요.. 그치만 이런게 있구나 정도는 알수있었어요 멋진강의 감사합니다
함수의 포인터는 프로그램에 대한 경험치가 좀 쌓여야지 잘 사용할 수 있는 기술이라서 초보자들에게는 어려울 수 있습니다. 제 블로그에 보면 함수 포인터에 대한 글이 추가적으로 있으니 해당 글도 꼭 찾아서 보시기 바랍니다~ :)
김성엽 형님 형님을 실제로 뵙고 싶은데ㅠㅠ 바쁘시겠죠?? 제 스승님이시거든요.. 한번 만났으면 좋겠네요ㅠㅠ
코로나 사태가 좀 끝나면 외부 공부 모임이나 행사가 있을 겁니다~ 기회가 되면 참여해보세요~ :)
김성엽 평생 사모하겠습니다
ㅎㅎㅎ
함수 포인터 대박이네요
함수 포인터가 C언어의 원톱 기술입니다 ㅎㅎ
완강 했습니다! 유익한 강의 무료로 제공해주셔서 감사합니다^^
고생했습니다~ :) 축하해요!
막 끝낸 사람에게 이런 말 하기는 좀 그런데, C 언어는 여러 번 보는 게 효과적이라서 빠르게 한 번 더 보는 걸 추천합니다. ㅎㅎ
그리고 두 번 보고 나면 아래에 링크한 글 참고하셔서 C 언어 무료 온라인 강좌도 참여해보세요. 공부했던 내용도 정리되고
앞으로 무엇을 해야할 지도 알게 될 수 있는 강좌입니다.
cafe.naver.com/twlab/90
20:15
질문 있습니다!
sum.lib가
1번라인 int Sum(int a, int b, void (*pa)(int *))
2번라인 { if(NULL != pa) (*pa)(&a)
3번라인 return a + b }
}
일 때 선생님께서 말씀 하셨듯이 결국 라이브러리 사용자 입장에서는 sum 함수 내부의 코드를 전혀 알 수 없는데
헤더 파일의 함수 원형만 보고 어떻게 기능을 만드는 것인가요??
사용자의 입장에서는
라이브러리 파일 안에
2번라인이 if(NULL != pa) (*pa)(&a) 인지 if(NULL != pa) (*pa)(&b) 인지 조차도 알 수 없는 경우인데
MyAbsolute 함수를 만들어서 void (*pa)(int *) 인자로 넣어 주었다고 해도
a의 값을 주소로 받아 절대값으로 바뀌는지 b의 값을 주소로 받아 절대 값으로 바뀌는지 아니면 둘 다 바뀌는지 알 수 없지 않나요?
라이브러리 파일안에 sum함수가 어떻게 설계되어 있는지 알 수 없는데 어떻게 기능을 만들 수 있는지 궁금합니다!
이야기하신 것처럼 사용하는 사람은 알 수 있는 방법이 없습니다. 따라서 Sum 함수를 만드는 사람이 함수 코드는 보여주지 않더라도 의도를 주석으로 잘 설명을 남기거나 추가 자료를 만들어서 함수와 함께 제공합니다. 그래서 보통은 글로 적는 것보다는 예시 코드를 함께 적어주는 것이 더 좋습니다.
이거는 코딩 다 짤 줄 알고 봐야겠네여 나중에 다시보자...!
C언어 궁극의 기술입니다 ㅎㅎ 당연히 초보자들에게는 힘든 기술인데 제가 소개하는 이유는 결국 이걸 사용하는 개발자가 되어야 하니까 미리 언급해두는 겁니다. 그래야지 나중에 이런 기술을 사용하게 되니까요 ㅎ
완강 까지 한강 남았네요 ㅎㅎㅎ
부록도 다 보셔야 합니다. 제 강좌는 부록에도 중요한 내용이 많습니다~ :)
마지막까지 파이팅입니다!
C언어 프로젝트로 easywin32로 오목 짤려고 하는데 선생님 블로그 보고 짜는게 맞는게 안보고 꾹 참고 짜는 게 맞는지.... 물론 혼자 짤수 있으면 좋겠죠 ?
프로그램을 만드는 방법을 배우는 과정이라서 저 정도는 보시면서 실습하시고 저런 루틴이 익숙해지면 비슷한 프로그램을 스스로 만들어 보는 것이 좋습니다. 처음부터 헤딩은 추천하지 않습니다 ㅎ
@@tipsware 답변 감사합니다!!!
혹시 visual studio에서도 .lib 파일을 직접 만들수도 있나요?
네~ 프로젝트 생성에서 템플릿중에 라이브러리 만드는 템플릿이 따로 있습니다. 그거 선택해서 작업하면 됩니다.
라이브러리를 초보자들이 만드는 경우가 없어서 라이브러리에 대해 제가 적거나 녹화한 강좌는 대부부 MFC 파트에 있을겁니다.
라이브러리는 쉽지가 않네요;;
라이브러리는 초보자가 만드는것이 아니기 때문에 지금 고민하실필요는 없습니다~ 이렇게 사용도 가능하다는것을 미리 안내하는 것입니다. 프로그램을 계속하다보면 라이브러리에대한 필요성이 생기게 되는데 그때 제대로 공부하셔서 사용하면 됩니다.