Study/C프로그래밍
[C프로그래밍] #5 함수와 기억 클래스
yujin.me
2021. 4. 27. 18:22
함수
- 함수란 특정한 작업(기능)을 수행하도록 설계된 독립적인 프로그램
함수의 특성
- 함수들은 서로를 자유로이 호출 가능
- 모든 함수는 서로 독립적
함수의 장점
- 프로그램의 수정이 용이
- 함수 재사용으로 코드 중복 최소화
- 프로그램의 기능을 한 눈에 파악할 수 있게 해줌으로써 유지가 쉬움
표준 함수
- 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;
}
반응형