- 지역 변수
특정 범위내에서만 통용되는 변수로서 선언된 블록이나 함수내에서만 사용이 가능한 변수
- 전역 변수
함수 밖이나 외부파일에서 선언되어 프로그램 전체에 걸쳐 사용될 수 있는 변수
- 자동 변수
보통 함수 실행시에 만들어지고 실행이 끝나면 기억공간이 제거되는 유형으로서 auto 라는 예약어를 사용하여 선언하며 생략이 가능한 변수
- 정적 변수(static)
변수의 기억영역을 프로그램이 끝날때까지 계속 유지하기 위해서는 변수를 static으로 선언해 주면 된다.
- 외부 변수(extern)
외부란 함수의 외부에 선언되어 있다는 의미이다. 따라서 외부 변수는 전역 변수와 같다.
이러한 외부변수를 사용하고자 하면 그 변수를 extern으로 선언해 주면 된다.
- 레지스터 변수
CPU 내의 레지스터에 자료를 저장하고자 할 때 사용된다.
레지스터 변수를 사용하는 이유는 프로그램의 실행속도를 조금이나마 늘리기 위해서이다. 왜냐하면 기억장치로의 자료 입출력보다 레지스터로의 자료 입출력의 속도가 빠르기 때문이다.
따라서 반복문에서의 카운터 변수로 많이 사용되며 register 변수로 선언하면 된다. 또한 레지스터 변수는 자동변수와 동일한 속성을 가지고 있으며 일반적으로 정수형(문자형 포함) 자료에 사용되고 전역변수로는 선언될 수 없다.
하지만 CPU의 레지스터 개수가 한정되어 있으므로 특별한 경우가 아니면 자동 변수를 사용하는 것이 좋다.
- 함수의 개념
반환자료형 함수명(자료형 매개변수1, 자료형 매개변수2, ...) ->함수 헤더
{ ->함수 시작
함수 몸체
} ->함수 끝
- 함수의 정의
int
sum
(int
a,
int
b)
결과값 되돌려 줄 때 자료형
함수명
매개변수 자료형
매개변수1
매개변수 자료형
매개변수2
{
int
d:
-> 함수내에 새로 사용되는 변수 선언
d =
a + b;
return
(d)
-> 값을 되돌려 줄 때 사용
}
- 함수의 호출
void main()
{
int d;
↓①
d = sum(10, 20);
② →
int sum(int x, inty)
{
int z;
z = x + y;
return z;
}
↓③
printf("%d \n", d);
}
↓⑤ ↖④
- return문
함수를 끝내고 제어와 함수 수행결과를 호출함수로 넘긴다.
return 0; -> 상수 0 반환(정상적인 종료를 의미)
return 1; -> 상수 1 반환
return x; -> x값 반환
return (x + y + z); -> 수식의 결과값 반환
return (sum(10, 20)); -> 다른 함수 호출
- 매개변수 사이의 자료 전달 방법
매개변수들 사이의 자료 전달 방법으로는 값에 의한 전달(call by value)과 참조에 의한 전달(call by reference)이 있다.
▶ 값에 의한 자료 전달 방법
C언어 에서의 기본적인 자료 전달 방법으로서, 실 매개변수와 형식 매개변수 사이에 값의 전달이 된다.
예) fcn1 (10, 20); -> 함수 호출(실 매개변수)
int fcn 1 (int x, int y); -> 함수 정의(형식 매개변수)
▶ 참조에 의한 자료 전달 방법
값에 의한 전달 방법과는 달리 실 매개변수에서 형식 매개변수로의 자료의 전달이 일어날 뿐 아니라 전달된 후 바뀐 형식 매개변수의 값도 되돌려 받을 수 있다. 즉 실 매개변수의 값이 들어 있는 주소값이 전달되기 때문이다.
예) fcn1 (10, 20); -> 함수 호출(실 매개변수)
int fcn1 (int *x, int *y); -> 함수 정의(형식 매개변수) 주소값을 전달