Inflearn コミュニティ Q&A
投稿者なし
この投稿の投稿者情報は削除されました。
함수 포인터
解決済みの質問
作成
·
142
1
Goodbye 및 Thankyou 함수를 이용하여 atexit을 설명하실때
Goodbye 및 Thankyou 함수포인터를 호출한다고 하셨는데. 저 둘은 그냥 함수이고 atexit이 exit하면서 함수포인터처럼 역할을 하는 것이 아닌가요? 헷갈려서 질문 남깁니다.
クイズ
전처리기(preprocessor)가 프로그램 빌드 과정에서 하는 주된 역할은 무엇일까요?
소스 코드를 기계어로 번역합니다.
다른 소스 파일이나 헤더 파일의 내용을 복사하여 붙여넣고 매크로를 확장합니다.
여러 목적 파일을 합쳐 실행 파일을 만듭니다.
프로그램 실행 중 발생하는 오류를 처리합니다.
回答 3
2
안녕하세요? 질문&답변 도우미 Soobak 입니다.
atexit() 는 함수입니다.
해당 함수는 인수로 '함수 포인터'를 받으며, 프로그램이 정상적으로 종료될 때 등록된 함수를 실행하는 역할을 합니다.
C언어에서 함수의 이름은 함수 포인터처럼 동작하여 해당 함수의 주소에 접근할 수 있도록 해줍니다.
(강의 14.21 함수 포인터의 원리 의 9:10 부분, 이어지는 강의 14.22 함수 포인터의 사용 방법 을 참고해보시면 이해에 도움이 되실 것 같습니다.)
따라서, void goodbye(void); 와 같은 함수를 atexit(goodbye) 와 같이 사용할 때, goodbye 라는 함수 이름이 해당 함수의 주소로 변환되어 atexit 에 전달됩니다.
atexit() 함수는 이렇게 전달받은 함수의 주소를 저장하고, 프로그램이 종료될 때 해당 함수들을 호출합니다.
함수의 원형은 int atexit(*func); 와 같으며, 참고를 위한 링크를 첨부드립니다.
https://en.cppreference.com/w/cpp/utility/program/atexit(링크)
0
0
안녕하세요, 인프런 AI 인턴입니다. CHAMBIT OH님,
함수 포인터와 관련된 질문에 대해 유사한 질문과 답변을 찾았습니다. 아래 링크를 통해 참고해 주시기 바랍니다.
- 함수 포인터 크기: 함수 포인터와 메모리 주소에 관한 기본 개념을 설명합니다. 이는 함수 포인터에 대한 이해를 돕기 위한 내용입니다.
회원님의 경우 atexit 함수와 함수 포인터의 역할에 대해 헷갈리시는 것 같아, atexit 함수의 사용 방법에 대해 설명드리겠습니다.atexit은 프로그램이 종료될 때 호출할 함수를 지정하는 함수입니다. 여기서 함수 포인터를 사용해Goodbye나Thankyou와 같은 특정 함수를 가리키게 됩니다. 해당 함수는 atexit 함수가 호출될 때 자동으로 실행되는 함수입니다.
#include <stdlib.h>
#include <stdio.h>
void Goodbye(void) {
printf("Goodbye!\n");
}
void Thankyou(void) {
printf("Thank you!\n");
}
int main(void) {
atexit(Goodbye);
atexit(Thankyou);
printf("Exiting main\n");
return 0;
}
이 예제에서 Goodbye와 Thankyou 함수는 atexit에 등록되어 프로그램이 종료될 때 호출됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






안녕하세요? 본 질문에 답변 작성드렸습니다.
혹시 추가적으로 궁금하신 점 있으시면 편하게 댓글 작성해주세요.