[C언어] 4. 함수 포인터와 void 포인터
제가 책(윤성우의 열혈 C 프로그래밍)을 보다가 까먹었던 부분만 포스팅 하는 것입니다!
순서가 뒤죽박죽이어도 이해해주세요~~!
함수포인터
함수를 가리키는 함수포인터 선언은 다음과 같습니다.
만약 함수의 원형이 int function(int n); 이라고 하면,
int (*ptr)(int); //함수 포인터
형이 존재하지 않는 void 포인터
void형 포인트 변수는 무엇이든 담을 수 있는 바구니에 비유할 수 있습니다.
void *ptr;
하지만,
형을 정해주지 않으면 어떠한 포인터 연산도 하지 못합니다.(&과 *연산 불가)
일단 주소 값에만 의미를 두고, 포인터의 형은 나중에 결정합니다.
(메모리 동적할당과 관계가 있습니다.)
main 함수로의 인자전달
main 함수의 정의형태는 다음과 같습니다
int main(void){ ... }
int main(int argc, char* argv[]){ ... }
즉, main함수도 인자를 전달 받을 수 있습니다.
인자는 보통 명령 프롬프트에서 전달합니다.
예를 들어 실행파일 이름이 EX.exe (현재 c:\에 위치)이라면,
cmd 창에서 다음과 같이 입력해보겠습니다.
c:\>EX I like you
그러면 입력한 문자열들은 공백으로 구분이 되고,
문자열의 개수 4가 main 함수의 int argc로,
4개의 문자열이 배열에 묶여서 char *argv[]에 전달됩니다.
공백을 포함하는 문자열을 생성하려면 “ “을 이용하면 됩니다~
C:\>EX "I like you"
이 때 문자열의 갯수는 2이고, “I like you”가 하나의 문자열로 생성됩니다.