-
20140321 (함수, 지역변수)부산IT학원/스마트컨트롤러 2014. 3. 21. 16:05
25일차
--------------------
Function ( 함 수 )
--------------------
- 어제 보았듯이 어떤 기능을 하는 역할.
- int Add(); 이런 형태는 함수의 원형( prototype, interface ) 라고 한다.
- int Add() { A } 이런 형태는 함수의 정의이다.
뭐 설명은 어려운데 예제를 보면 쉽다.
예제를 보자.
#include <stdio.h>
int Add(int iNum1, int iNum2); // 함수 선언, 원형
/*
int Add(int iNum1, int iNum2) // 이렇게 main 위에 와도 괜찮다.
{ // 선언, 정의? 다 같이 한다?
int iResult = iNum1 + iNum2;
return iResult;
}
*/
int main()
{
int iNum;
iNum = Add(10, 20);
printf("%d \n", iNum);
return 0;
}
int Add(int iNum1, int iNum2) // 함수 정의
{
int iResult = iNum1 + iNum2;
return iResult;
}프로그램 진행 순서가
이렇게 흘러간다.
10, 20 이란 인수를 받아서 Add 함수에서 그 값만 받는다.
받은 값을 iResult에 넣어서 반환한다.
위에서 본 바와 같이
어떤 일정한 반복된 코드나,
역할을 나눌때
함수를 만들어 사용한다.
여기서 잠깐,
printf, scanf 등등 가져다 쓰는 함수들을 모아서
라이브러리 라고 부르고 컴파일 과정 중 링크때 연결된다.
우리가 만든 함수는 전처리 과정 중에 불러온다.
-------------
지역변수
-------------
- { 에서 } 까지가 지역변수의 수명.
ex) 예제 소스
#include <stdio.h>
main()
{
int iNum; // main 의 지역변수 iNum
iNum = 0;
if(0 == iNum)
{
int iNum = 1; // if 의 지역변수 iNum
} // if 의 지역변수 iNum 소멸
printf("iNum : %d \n", iNum); // main 의 지역변수 iNum
while(2 > iNum) // main 의 지역변수 iNum
{
int iTemp = 0; // while 의 지역변수 iTemp 생성
// while문이 반복할 때마다 iTemp 생성, 소멸 반복
++iTemp;
++iNum;
printf("iTemp : %d \n", iTemp);
printf("iNum : %d \n", iNum);
} // while문 지역이 끝나면서 iTemp도 소멸
{
int iNum = 0; // 이름없는 지역의 지역변수 iNum
iNum = 1000;
} // 지역이 끝나면서 iNum도 소멸
printf("iNum : %d \n", iNum); // main 의 지역변수 iNum
return 0;
}출력 화면
위에서 보았듯이 지역변수끼리 이름만 같았지
서로 다른 주소를 사용하기 때문에 서로 영향을 끼칠 수 없다.
변수 이름이 같을 경우
더 작은 지역의 변수의 이름을 사용하고
없을 경우 한층 위 지역의 변수를 사용한다.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140325 (배열, 문자열) (0) 2014.03.25 20140324 (전역변수, 메모리 구조, 재귀함수) (0) 2014.03.24 20140320 (포인터, Hexa View, 함수) (0) 2014.03.20 20140319 (포인터, little endian, big endian, 포인터 연산) (0) 2014.03.19 20140318 (포인터, &, *, (int *) ) (1) 2014.03.18