[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”가 하나의 문자열로 생성됩니다.