일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Houdini
- jupyter lab
- git
- C# delegate
- Flutter
- vim
- 도커
- 다트 언어
- Data Structure
- dart 언어
- gitlab
- Algorithm
- 깃
- jupyter
- docker
- c언어
- Python
- c# 윈폼
- c#
- c# winform
- c# 추상 클래스
- C언어 포인터
- Unity
- 플러터
- HTML
- github
- 포인터
- 구조체
- C++
- 유니티
- Today
- Total
목록함수 포인터 (3)
nomad-programmer
열거형을 구조체의 멤버로 등록하고 사용하는 예제이다. #include // 열거형 정의 enum play_type { RUN, STOP, ATTACK }; // response 구조체안에 열거형을 멤버로 넣었다. typedef struct { char *name; enum play_type type; } response; void run(response r) { printf("%s\n", r.name); puts("run!"); } void stop(response r) { printf("%s\n", r.name); puts("stop!"); } void attack(response r) { printf("%s\n", r.name); puts("attack!"); } int main(void) { res..
모든 프로그래머가 완제품 형식의 프로그램을 만들지는 않는다. 프로그래머는 자신의 코드가 노출되면 안되기 때문에 해당 코드를 컴파일해서 라이브러리(*.lib) 형식의 파일로 제공한다. 그리고 라이브러리 안에 있는 함수들이 어떤 형태로 선언된 함수인지 알아야 코드를 자세히 볼 수 없는 사용자들도 사용할 수 있기 때문에 함수의 원형들을 헤더(*.h) 파일에 적어서 함께 제공한다. 예를 들어 두 개의 정수 값을 넘겨 받아서 합산하는 Sum 함수를 라이브러리 형태로 제공한다고 가정하면, 라이브러리 사용자에게는 파일 내부를 볼 수 없는 라이브러리 파일 sum.lib와 라이브러리 파일을 설명하는 헤더 파일 sum.h를 모두 제공해야 한다. // 헤더 파일 sum.h // sum 함수의 원형 int sum(int a,..
함수 포인터(Function Pointer)란 특정 함수를 구성하는 시작 명령의 위치를 가리키는 포인터이다. 함수 포인터를 사용하면 해당하는 함수를 호출하여 실행할 수 있다. 데이터를 가리키는 포인터가 자신이 가리킬 대상의 크기를 명시하듯 함수 포인터는 함수 원형(Function Prototype)을 사용하여 포인터를 선언한다. 더보기 함수 포인터가 함수 원형을 사용하는 이유는 함수 원형을 알아야 함수를 호출할 때 스택 프레임을 구성할 수 있기 때문이다. * 스택 프레임: 스택을 함수 단위로 구역을 나눠 사용할 수 있도록 C언어에서 제공하는 스택 관리 방식. 원형이 같은 함수들 묶기 함수 포인터를 사용하는 가장 큰 이유는 같은 형식의 함수를 그룹으로 묶을 수 있기 때문이다. #pragma warning(..