NULL
함수포인터 선언과 이해 본문
함수이름에도 주소값이 있다.
함수포인터도 포인터과 같이
그 함수의 함수반환형과
매개변수의 타입도 동일해야한다.
함수포인터에 타입을
매개변수로 인자를 전달할때
굳이 정해주지않아도 된다.
하지만 그 함수내에서 변수의사용을
하려면 변수이름을 정해줘야한다.
그리고 매개변수의 타입형갯수도
1개면 1개 2개면 2개
이렇게 갯수도 동일하게 넘겨줘야한다.
함수포인터 선언법을 알아보자.
int SoSimple(int num1, int num2) { }
이런 함수가 있다고 가정해보자.
int (*fptr) (int, int);
이런식으로 함수를 지정해줄
포인터를 선언하고
가리킬 함수에 매개변수와
동일한 자료형타입과 갯수를
괄호안에 적어준다.
fptr=SoSimple;
그리고 fptr에 함수의 이름을
대입시키면 함수의 주소를
가리키게 된다.
fptr(3, 4);
그리고 함수매개변수에 맞는 타입으로
3과 4를 인자로 전달하면
SoSimple함수의 매개변수
num1=3, num2=4
이렇게 값이 전달이 된다.
함수포인터변수는
fptr=함수이름;
이렇게 대입해서
대상을 바꿀 수 있다.
소스를 보면
문자열을 출력하는 함수와
정수의 합을 출력하는 함수가 있습니다.
해당 함수들의 반환형은 void입니다.
따라서 void를 하고 포인터변수와
매개변수의 타입과 맞는갯수를 쓰고
함수의 이름을 대입시키면
함수 포인터의 선언이 완료됩니다.
그리고 함수에 각각
맞는 타입의 인자를 전달하면
함수 포인터에 들어있는
함수의 주소값으로 가서
함수들의 기능들이 동작합니다.
반환형도 void고 매개변수도 void인
함수포인터는 주소값의 저장만 할수있고
값의 연산이나 메모리 접근연산도 할수없다.
매개변수를 선언할땐
포인터변수로 선언하든
배열형태로 선언하든
똑같은 포인터의 선언이다.
[]은 대상을 가리키는
대상체이기때문에
이것 역시 포인터와 같은
기호인셈이다.
'C' 카테고리의 다른 글
입출력 스트림의 이해(I/O) (0) | 2017.02.03 |
---|---|
함수의 선언 (0) | 2016.12.20 |
다차원배열과 포인터의 관계 (0) | 2016.12.19 |
이중포인터 이해하기 (0) | 2016.12.19 |
2차원배열 개념정리 (0) | 2016.12.19 |