Chapter.9 함수 포인터와 void 포인터

  • 함수 포인터와 void 포인터
    • 함수 포인터의 이해
      • 모든 함수는 프로그램 실행 시 '메인 메모리'에 저장되어서 실행된다
      • 이때! 함수의 이름은 함수가 저장된 메모리 공간의 주소 값을 의미한다 // 이때 배열과 마찬가지로 상수 이다
      • 함수 포인터를 선언하기 위해선 두가지 정보를 알아야 한다 ex) int SimpleFunc(int num) { ~ }
        1. 반환형 int 
        2. 매개변수 선언 int num
      • 함수 포인터의 형(Type)을 정하기 위해선 반환형과 매개변수의 선언형태를 기준으로 선언한다
             
      • ex) double SoSimple(int num1, int num2) { ~ } // double (*fptr) (int, int) = SoSimple;
      • 이후 fptr은 SoSimple과 변수, 상수 차이를 제외한 모든 기능이 동일하다(함수 호출가능) // 유연성 ↑
    • 형(Type) 이 존재하지 않는 void 포인터
      • void * ptr; // 다음과 같이 선언되는 포인터 변수를 'void형 포인터 변수' 라 한다
      • void 형 포인터 변수는 무엇이든 담을 수 있는 바구니에 비유된다, 변수, 배열, 함수의 주소 마저 담을 수 있다
        1. 모든 변수를 담을 수 있다
        2. 아무런 포인터 연산을 할 수 없다(* 연산), 값의 변경이나 참조가 불가능하다
      • "주소 값에만 의미를 두고, 포인터 형은 나중에 결정할때" 유용하게 사용된다 // 동적할당과 관계깊다
  • main 함수로의 인자 전달
    • int main(void) { ~ } // int main(int argc, char* argv[ ]) { ~ } 두 형태 모두 main 함수 이다
    • main 함수를 통한 인자 전달
      • 컴파일 후 debug폴더에 exe 실행파일을 C:\ 이동 후 cmd 로 실행하면서 문자열을 같이 전달한다
               
      1. argc = 입력한 문자열의 개수
      2. *argv[ ] = 입력받은 문자열 배열의 주소 값

'IT공부 > 윤성우 열혈 C프로그래밍' 카테고리의 다른 글

C언어의 깊은 이해_2  (0) 2022.02.09
C언어의 깊은 이해_1  (0) 2022.02.07
포인터와 배열의 시작_3  (0) 2022.02.05
포인터와 배열의 시작_2  (0) 2022.02.04
포인터와 배열의 시작_1  (0) 2022.02.02

+ Recent posts