Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- php
- python
- 자바스크립트 node
- GIT
- 보안뉴스
- Oracle SQL
- 카카오프로젝트100
- 파이썬
- 깃허브
- 랜섬웨어
- 자바스크립트 prototype
- oracle
- ES6
- 오라클
- 보안뉴스 요약
- 자바스크립트 element api
- 카카오프로젝트
- 자바스크립트 객체
- 카카오프로젝트 100
- oracle db
- 보안뉴스한줄요약
- 자바스크립트 API
- 자바스크립트 jQuery
- 자바스크립트
- 다크웹
- 보안뉴스요약
- numpy
- 보안뉴스 한줄요약
- javascript
- 자바스크립트 기본 문법
Archives
- Today
- Total
FU11M00N
C언어 함수포인터 본문
C언어 함수포인터란?
포인터 변수는 해당 변수의 메모리주소를 가질수있는 변수입니다.
그럼 함수포인터는 특정 함수에 대한 메모리 주소를 가질수있는것입니다.
함수포인터를 쓰는이유?
프로그램의 코드가 짧아집니다.
함수포인터를 배열에 담아서 사용할수있어 중복되는 코드를 줄일수있습니다.
사진 1-1은 메모리의 구조를 간단히 그림화 시킨것입니다.
함수들은 코드세그먼트 영역에 저장됩니다.
#include <stdio.h>
void function(int a, int b){
printf("%d + %d = %d\n",a,b,a+b);
}
int main(){
function(10,20);
return 0;
}
이 코드를 간단히 코드 세그먼트 영억으로 생각하여 봅시다!
main함수에서 function함수를 호출하였습니다. 이 의미는
main함수에서 function 200번지에 가서 function 함수를 실행시키고 main 100번지로 복귀를 하는 의미입니다.
그럼 함수포인터를 간단히 써보겠습니다.
#include <stdio.h>
void function(int a, int b){ // int 타입 2개로 a,b 선언
printf("%d + %d = %d\n",a,b,a+b);
}
int main(){
void (*p)(int,int)= function; //리턴값이 void 이고 매개변수는 int,int 인 함수의 주소 를 저장할수있는 함수포인터 p
function(10,20); // 10과 20 의 인수를 넘겨주고 function 호출
p(100,200); 100과 200 의 인수를 넘겨주고 function 호출
printf("%p %p",p,function); // p와 function의 주소를 알기위한것
return 0;
}
void (*p) (int,int) = function; 은
리턴값이 void 이고 매개변수는 int,int 인 함수의 주소 를 저장할수있는 함수포인터 p 입니다.
그렇기 때문에 p(100,200); 으로 function함수 주소 번지수로 가서 값을 대입할수있는것입니다!
'Programming > C Language' 카테고리의 다른 글
C언어 대입 연산자, 산술 연산자, 복합 대입 연산자 (0) | 2020.04.18 |
---|---|
[C언어] C언어 <stdint.h> 헤더파일 (0) | 2020.04.18 |
C언어 포인터 와 배열 이해와 차이점 (0) | 2020.04.14 |
C언어 스택의 기본개념과 재귀함수의 개념 (0) | 2020.04.13 |
C언어 포인터 기본 (0) | 2020.04.10 |
Comments