728x90
반응형
함수 포인터 들어가기가 전
CallBack 함수를 사용할 때 함수 포인터를 통해 응용한다.
콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다.
함수의 구조 - 포인터 관점에서의 이해
int fun_1 (int a)
함수의 "( )" 는 연산자로써 컴파일러가 인식한다.
함수포인터
함수 포인터는 함수의 주소를 저장하는 포인터
- 함수도 변수와 마찬가지로 컴파일 및 링크 후 메모리 특정 번지에 할당된다.
- 함수 코드나 문자열 리터럴은 실행 중 변경되지 않으므로 일기 전용인 텍스트 세그먼트에 할당된다.
- 텍스트 세그먼트의 코드도 메모리 특정 번지에 로드되며 실행 중 함수의 주소로 사용된다.
함수에 대한 포인터를 선언하려면 함수 포인터가 가리킬 함수의 원형이 필요하다.
- 변수에 대한 포인터는 가리킬 변수의 데이터 타입과 같이 선언한다.
- 함수 포인터도 가리킬 함수의 원형과 같은 형태로 선언한다.
함수의 원형도 변수의 데이터 타입과 같이 생각하고
메모리에 저장되는 함수 포인터를 이해하자.
함수 포인터 선언하기
소괄호 연산자는 컴파일러에서 우선 연산을 의미하므로,
소괄호를 묶어서 컴파일러에게 연산순서를 알려줘야한다.
함수 포인터 초기화
& 연산을 사용해야지만, 시스템 상 올바른 코드작성법이다.
하지만, &을 사용하지 않아도 C언어 컴파일러는 돌아간다.
함수 포인터 사용
NULL Test를 하는 것이 안전하고, 이를 토대로
시스템 상의 예외상황을 처리할 수 있다.
이는 Java의 Try-Catch문의 예외처리와 동일하다. (Null Test)
교수님 Say: 이러한 테스팅과정을 몸에 베기는 사람이 협업에서도 유능한 사람이다.
함수 포인터 예제
함수 포인터 배열
함수 포인터의 활용 - CallBack 함수
CallBack 함수는 만일, 호출할 함수의 이름을 미리 알 수 없을 때 사용한다.
이중 for문을 통한 2차원 배열
for문의 제어식을 구성할 때는 항상 가능성을 열어두고,
제어식을 구성해야된다.
시야를 넓힌 사고가 나를 더 편하게 만든다.
2차원 배열 관련 포인터 출력 예제
배열 + 1
주소값 + 1
이는 서로 다른 메모리 상의 값을 배정받는다.
arr = arr[0][0]
-> arr + 1 = arr[1][0]
즉, 12 만큼 이동 (정수형이고, int가 4byte이고, 2차원 배열의 열의 갯수가 3개이기 때문이다.)
arr[0] = arr[0][0]
-> arr[0] + 1 = arr[1][0]
&arr = arr[0][0]의 주소를 의미한다.
&arr[0] = arr[0][0]의 주소를 의미한다.
포인터에 정보 추가하기
포인터의 사용의미를 알고서 코드를 구성해야지만,
C언어의 흥미를 느낄 수 있고, 실력이 는다.
그렇기에, 차근차근 기초부터 이해를 해야한다.
(시야를 넓히며 뭐든지, 차근차근 처음부터 익히자.)
C언어 공부가 필요한 부분
힙, 스택, 세그먼트 영역 등등 C언어 연산 시 메모리 구조
포인터 기초 & 포인터 활용
마무리...
요즘 들어서 대학강의에 대해서 집중을 제대로 하지 않는 것 같다.
그치만 해야되는 걸 오늘 C 현강을 듣고 깨달았다. - 원하는 것만 할 수 없는 걸 | 안전지대를 벗어나야 발전한다.
728x90
반응형
'CS 대학강의' 카테고리의 다른 글
[CS 1-2 | 대학생을 위한 실용금융] 신용관리 10주차 (0) | 2022.11.09 |
---|---|
[CS 1-2 | 프로그램 설계 방법론] abstract 클래스, Interface, 상속이란 (0) | 2022.11.09 |
[CS 1-2 | 시스템 프로그래밍 기초] 배열 포인터 13주차 (0) | 2022.11.04 |
[CS 1-2 | 프로그램 설계 방법론] Java GUI 12주차 (0) | 2022.11.03 |
[CS 1-2 | 대학생을 위한 실용금융] 투자의 정리 8주차 (0) | 2022.11.02 |