일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- tensorflow 예제
- Pytorch Lecture
- 딥러닝 공부
- 가우시안 필터링
- matlab 영상처리
- 영상처리
- c언어 정리
- pytorch
- 케라스 정리
- C언어 공부
- 파이토치 김성훈 교수님 강의 정리
- 딥러닝
- 파이토치 강의 정리
- 김성훈 교수님 PyTorch
- 모두의 딥러닝
- 골빈해커
- MFC 프로그래밍
- c++
- 미디언 필터링
- 딥러닝 스터디
- 모두의 딥러닝 예제
- 해리스 코너 검출
- 파이토치
- 컴퓨터 비전
- 팀프로젝트
- c++공부
- pytorch zero to all
- TensorFlow
- c언어
- object detection
- Today
- Total
ComputerVision Jack
[C프로그래밍 Chapter14] 본문
[함수 포인터와 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 |