본문 바로가기

Study/C프로그래밍

[C프로그래밍] #5 함수와 기억 클래스

함수

  • 함수란 특정한 작업(기능)을 수행하도록 설계된 독립적인 프로그램

함수의 특성

  • 함수들은 서로를 자유로이 호출 가능
  • 모든 함수는 서로 독립적

함수의 장점

  • 프로그램의 수정이 용이
  • 함수 재사용으로 코드 중복 최소화
  • 프로그램의 기능을 한 눈에 파악할 수 있게 해줌으로써 유지가 쉬움

표준 함수

  • C언어 자체에서 제공하는 함수
  • 표준함수의 원형은 헤더파일에 정의
  • 표준함수의 실체는 라이브러리 파일에 수록
  • 표준함수를 사용하려면 원형이 선언되어 있는 헤더파일을 #include 시켜주어야 한다

표준함수의 원형 예

#include <stdio.h> // 입출력 함수를 처리하기 위한 헤더파일
#include <math.h> // 수학 함수를 처리하기 위한 헤더파일
#include <string.h> // 문자열 처리함수(strlen)를 위한 헤더파일
#include <ctype.h> // 문자형태 판별함수(isalpha, isdigit)를 위한 헤더파일

함수의 원형 선언

  • 일반적으로 main()함수 이전에 한다
  • 원형선언은 함수와 관련된 3가지 성질을 선언 : 함수의 반환형, 매개변수의 개수, 매개변수의 자료형

매개변수 사이의 자료전달 방법

1. 값에 의한 자료전달

2. 참조에 의한 자료전달

void main(){
	swap(&a, &b);	// 주소값을 전달하기 위해 실 매개변수 앞에 주소 연산자 &를 붙임
}
void swap(int *x, int *y){ // 주소 값을 전달받기 위해 포인터변수 int *x, int *y를 선언

}

 

기억 클래스

  • 변수를 기억공간의 특정영역에 할당하는 방법
  • 즉, 각 변수의 유효범위와 존속기간을 설정
  • 변수의 사용위치에 따라 지역변수, 전역변수로 구분

지역변수

  • 특정 범위 내에서만 통용되는 변수
  • 선언된 블록이나 함수 내에서만 사용 가능

전역변수

  • 함수 밖이나 외부파일에서 선언되어 프로그램 전체에 걸쳐 사용될 수 있는 변수

기억클래스의 종류

  • 형식 : 기억클래스 자료형 변수명;
  • 기능 : 기존의 변수 선언문에 기억클래스만 기입

1. 자동변수

  • 함수 실행시 만들어지고, 실행이 끝나면 기억공간이 제거됨
  • 예약어 auto를 사용(생략 가능)
  • 통용 범위는 변수가 선언된 블록이나 함수 내로 한정
  • 지역변수에 해당
  • 초기화가 필요
int i = 1; 
auto int j = 2;

2. 정적변수

  • 기억영역이 프로그램 끝날 때까지 유지
  • 예약어 static을 사용
  • 전역 변수에 해당
  • 변수의 값은 프로그램 실행 중 계속 유지
  • 초기화가 없으면 0으로 초기화 됨
void main(){
	int a = 10; // 자동변수 선언
    static int b = 20; // 정적변수 선언
}

3. 외부변수

  • 함수의 외부에서 선언
  • 예약어 extern을 사용
  • 전역 변수에 해당
  • 초기화가 없으면 0으로 초기화 됨
#include <stdio.h>
int i = 10;
int j = 20;
void main(){
	extern int i; // 외부변수 선언(생략가능)
    extern int k; // 외부변수 선언(생략불가)
}

4. 레지스터변수

  • CPU 내의 레지스터에 자료를 저장하고자 할 때
  • 예약어 register를 사용
  • 자동 변수와 동일한 속성
  • 프로그램의 실행속도 증가를 목적으로 사용(주로 반복문에서 카운터 변수로 사용)
void main(){
	register int i; // register 변수 선언
    int sum = 0;
    for(i=0; i<=10; ++i) // register변수를 반복문의 카운터 변수로 사용
    	sum+=i;
    i -= 1;
}
반응형