C 함수

(2019-06-25)

C 언어 함수, 함수, 동적 메모리 관리 함수, malloc(), calloc(), free(), 동적 메모리 할당

1. C 언어함수

  ㅇ 특정 작업을 수행하도록 설계된 독립적인 프로그램(부프로그램)


2. C 언어의 특징

  ㅇ 모두 동등/대등한 자격을 갖음 (상하 관계가 없음)
  ㅇ 서로 독립적임 (종속적이지 않음)

  ㅇ C 프로그램의 실행은, 함수함수가 연결된 형태로 이루어짐 (실행)
  ㅇ 사용하기 전에 항상 함수의 원형을 밝혀야 함 (Prototype)


3. C 언어함수의 종류

  ㅇ 표준 함수 : C 언어 자체에서 제공 
     - 표준 라이브러리 형태로 제공 
        . 표준 함수의 형식인 원형(Prototype)은, 헤더 파일에 정의되어 있으며,
        . 그 실체는, 라이브러리 파일에 수록되어 있음
        . 실제 내용은, 링킹라이브러리 파일에서 읽혀져 작성된 프로그램에 결합됨

  ㅇ 사용자 정의 함수
     - 개발자가 직접 함수 선언 및 정의를 함


4. C 언어함수의 사용함수의 사용
     - 함수 선언 : 함수의 원형(Prototype) 
        . `함수인자값,반환값에 대한 타입`, `함수 이름`을 명시하는 것
     - 함수 정의 : 함수가 수행할 세부 동작을 작성하는 것
     - 함수 호출 : 수행 주체를 전달하고, 다시 받아오는 것

  ㅇ 함수 선언/함수 정의의 구조
     - 함수 헤더 : 반환자료형 함수명 (자료형 매개변수, ... )
     - 함수 시작 : {
     - 함수 몸체
     - 함수 끝   : }

  ㅇ 한편, 함수선언함수정의를 구분함으로써, 각각 다른 파일에 둘 수 있는 융통성 있음


5. 주요 함수

  ㅇ main()
     - 프로그램 수행시 가장 먼저 호출되는 함수로써, 모든 C 언어 프로그램에 꼭 존재

  ㅇ 입출력 (stdio.h)
     - 문자열 입출력 (stdio.h)        ☞ C 문자열 함수 참조
        . 단일 문자 입출력 (stdio.h)
           .. getchar(), putchar()
        . 문자열 입출력 (stdio.h)
           .. gets(), puts(), fputs(), scanf(), printf()
     - 파일 입출력 (stdio.h)
        . fopen(), fclose(), getc(), putc(), exit(), fprintf(), fscanf(),
          fgets(), fputs(), rewind(), fseek(), ftell(), fflush(), fgetpos(),
          fsetpos(), feof(), ferror(), ungetc(), setvbuf(), fread(), fwrite()

  ㅇ 단일 문자 검사 (ctype.h)
     - isalnum() (문자,숫자 여부), isalpha() (문자 여부)
     - iscntrl() (제어문자 여부), isgraph() (그래프문자 여부), isspace() (공백문자 여부) 
     - isdigit() (숫자 여부), isxdigit() (16진수 숫자 여부)
     - islower() (소문자 여부), isupper() (대문자 여부)


6. 동적 메모리 관리(할당,해제) 함수 (stdlib.h)컴파일시에 메모리 공간을 확정하지 않고, 프로그램 실행시 동적으로 처리
     
     - malloc()  : 실행중에 동적으로 1개 값 형식으로 메모리 공간(힙 메모리)을 할당 
        . 특징
           .. 할당할 메모리 크기를, 바이트 단위로 전달받고,
           .. 한 번 할당된 공간 크기 값들을 안 바꿈
           .. 할당 만 가능, 초기화는 할 수 없음
           .. (void *)을 반환하므로, 반드시 캐스트 연산자를 써야 함
        . 例)
           .. (int *) malloc (100*sizeof(int)); // 100개 정수 크기의 바이트
           .. (float *) malloc (sizeof(float)); // 1개 실수 크기의 바이트
        . 반환 : 할당된 메모리 공간의 첫 바이트의 포인터를 반환 (void *)
           .. 만일, 메모리 부족 등으로 할당 실패시, NULL을 반환

     - calloc()  : malloc과 유사하나, 두 값 형식으로 메모리 공간을 할당
        . (개수,사이즈) 형식으로 전달받으며, 할당된 공간의 값을 모두 0으로 초기화
        . 따라서, 배열을 할당하고 모두 0으로 초기화 할 때는 calloc를 쓰면 편함

     - free()    : 이전 할당된 메모리 공간의 해제

     - realloc() : 이전 할당된 메모리 공간 크기 조정


[C 함수] 1. C 함수 2. C 문자열 함수

 
        최근수정     요약목록     참고문헌