C언어는 그렇게 어렵지 않다:
void (*(*f[])()) ();
void형을 반환하는 함수에 대한 포인터를 반환하는 함수의 포인터로 이루어진 배열f의 정의다.
--------------------------
해설:
포인터란?
포인터는 컴퓨터 메모리의 특정 위치를 나타내는 값임
그리고 프로그램의 함수들도 실제로 메모리의 위치를 가진다(폰노이만구조 검색)
때문에 C언어는 함수또한 포인터로 나타낼수 있음
사실 C언어에서 함수의 이름은 메모리의 주소이기도 한데 알 필요는 없고...
(IDE 키기 귀찮아서 온라인 컴파일러 쓸거임)
위와 같이 함수가 있을때
위와 같은 형태로 함수의 포인터를 선언해서 사용할 수 있다
그런데 저 포인터 식을 그대로 쓰면 복잡하니 typedef로 간단하게 쓰겠다
위 코드에서 pf는 반환값과 인자가 없는 함수(void A()꼴)를 가리키는 포인터 타입이다
이때 pf를 반환하는 함수를 만들수도 있다
물론 pf를 반환하는 함수에 대한 포인터(ppf)를 만들수도 있다
또 해당 포인터(ppf)의 배열을 만들수도 있다
이때 위의 코드를 간단하게 만들기 위해서 사용했던 typedef를 제거하면
위와 같이 이미지의 "그 코드"가 나오고
정상 작동한다!
----------------------------
ps1. 물론 실제로 저딴 코드를 쓸일은 거의 없으니 안심하고 공부하세요 초심자 여러분!
ps2. 근데 저는 C언어로 코딩 안하고 C++ 씁니다
ps3. 이미지는 퍼온거지만 해설 달아서 자작유머
나의이름
2025/02/09 17:33
몰라 난 그냥 람다로 씌워서 펑션포인터 쓸거야 무서워
Medand
2025/02/09 17:34
에.. 저는 파이썬 쓸게요
냐옹쿠키
2025/02/09 17:39
저 포인터가 되게 좋은건 맞는데, 문제는 회사에서 코딩을 혼자하는게 아니라는거지.
주석달아도 추적하기 ↗같아서 그 회사에 평생충성할거 아니면 안쓰는게 맞음.
니라민
2025/02/09 17:46
예 저는 자바나 쓸게요.
새벽늑대
2025/02/09 17:48
하이레벨 언어일수록 쓰기 쉽다.
하지만 로우레벨일수록 연봉이 올라간다는 이야기가 있다.