관리 메뉴

ComputerVision Jack

[C프로그래밍 Chapter14] 본문

Programming Language/C Programming

[C프로그래밍 Chapter14]

JackYoon 2020. 2. 4. 12:14
반응형

[함수 포인터와 void 포인터]

함수 포인터

메모리상에 저장된 함수의 주소 값을 저장하는 포인터 변수

함수의 이름도 함수가 저장된 메모리 공간의 주소 값을 의미한다.

 

함수의 포인터 형(type)

반환형과 매개변수의 선언을 통해서 결정된다.

 

함수 포인터 변수 선언

  • int (*ptr) (int) : ptr은 포인터
  • int (*ptr) (int) : 반환형 int인 함수 포인터
  • int (*ptr) (int) : 매개변수 선언이 int 하나인 함수 포인터

void Simpe (int x1, int x2){   ...  }

 

void (*ptr) (int, int) = Simple;

ptr(num1, num2);

#함수 포인터 실제 사용

 

형(Type)이 존재하지 않는 void 포인터

void * ptr;

#void포인터는 무엇이든 담은 바구니라고 생각하면 된다.

변수 뿐만 아니라 함수의 주소 또한 담을 수 있다.

 

하지만 void형 포인터 변수가 갖는 정보로 연산이나 값 변경 참조가 불가능하다.

자료형이 정해진 그릇이 아니기 때문이다.

[main함수로의 인자 전달]

int main(void) { ... } 메인함수가

int main(int argc, char * argv[]) { ... } 형태로 정의될 수 있다.

main함수 또한 인자를 전달 받을 수 있도록 함수의 형태가 존재하기 때문이다.

 

char * argv[]

포인터 변수 선언.

char * argv와 똑같은 의미를 내포하고 있다.

따라서 argv는 char형 더블 포인터 변수이다. 이는 char형 포인터 변수로 이뤄진 1차원 배열의 이름을

전달 받을 수 있는 매개 변수이다.

 

만약 sample.exe 파일을 생성한 후, cmd창에서

c:\> sample Hello C programming 이라고 입력하게 된다면.

 

str[0] = sample\0

str[1] = Hello\0

str[2] = C\0

str[3] = programming\0 

 

형태로 생성이 되고, main함수는 (4, str)형태로 호출되게 된다.

그리고 str 배열의 마지막에도 NULL이 삽입되어 있다. 이 특징을 이용하여 배열의 값을 출력할 수 있다.

반응형

'Programming Language > C Programming' 카테고리의 다른 글

[C프로그래밍 Chapter16]  (0) 2020.02.06
[C프로그래밍 Chapter15]  (0) 2020.02.05
[C프로그래밍 Chapter13]  (1) 2020.02.03
[C프로그래밍 Chapter12]  (0) 2020.02.01
[C프로그래밍 Chapter11]  (1) 2020.01.31
Comments