반응형
콘솔창에서 입력받기
우리가 이제까지 했던 출력은 printf()함수를 사용해서 데이터를 출력할 수 있었다. 반대로 데이터를 입력받아서 출력하는 것도 가능하다. 똑같이 입력을 받을 때는 scanf() 함수를 사용한다.
형태는 scanf("출력형태", &변수명); 의 형태를 가진다.
int nNumber = 0;
printf("숫자를 하나 입력하세요.");
scanf("%d",&nNumber);
printf("입력된 숫자 : %d\n", nNumber);
- scanf(" 출력형태 ") 만 적어주는 것이 좋다. 다른 문자나 공백문자를 넣을 경우, 그 문자도 포함해서 입력해야지만 scanf 함수가 제대로 작동한다. 말 그대로 출력형태를 지정해주는 것이기 때문에 다른 문자는 넣지 않는 것이 좋다.
- & 문자 : 변수명 앞에 적어주게 되면 그 변수의 주소값을 나타내는 문자가 된다. 즉 입력 받은 문자를 지정된 변수의 주소로 접근해서 값을 넣어주게 된다.
함수 만들기
함수란 ?
- 하나의 특별한 목적을 실행하기 위한 명령어들의 집합체. 따라서 함수의 이름을 잘 지어서, 이름을 보고 함수가 어떠한 기능을 하는 함수인지 구분할 수 있다.
- 함수의 선언과 정의
함수의 선언 : 반환형태(자료형) 함수이름(매개변수1, 매개변수2, ...) ;
함수의 정의 : 반환형태(자료형) 함수이름(매개변수1, 매개변수2, ...) { 함수가 수행해야할 내용 }
- 함수는 함수가 호출되는 주체보다 더 윗 순위에 작성되어야 한다.
- 다른 함수 내에서는 함수 선언과 정의를 할 수 없다.
- 매개변수는 기본적으로 0개 이상이어야 한다. 함수를 호출하는 쪽에서 매개변수를 입력해 주어야 함.
- 함수 호출은 함수 이름(매개변수); 형태로 호출한다.
int Sum(int nValue1, int nValue2); //함수의 선언. 선언할 때는 형태를 적어준 뒤, ;을 붙인다.
//후에 어디든 함수 Sum을 정의해주어야 한다.
int main()
{
int result = Sum(10, 14); //함수를 사용하기 전에 main위에 함수 Sum이 선언되어야 한다.
//함수 이름과 매개 변수를 사용해서 호출.
printf("%d\n", result);
}
int Sum(int nValue1, int nValue2) //함수의 정의. 함수가 어떤 일을 하는지 정의해야 한다.
{
int result = nValue1 + nValue2;
return result;
}
//결과값 : 24
※ Call By Value, Call By Reference
- 말 그대로 함수를 호출(call)할 때, 매개 변수로 값(value)으로 출력하는 함수인지,
호출할 때, 매개 변수로 주소값(Reference)으로 출력하는 함수인지를 알려주는 말.
void Sum2(int nValue1, int nValue2, int& nResult); //Call By Value와 Call By Reference가 합쳐진 함수
int main(){
int num1 = 10;
int num2 = 14;
int result = 0;
Sum2(num1, num2, result);
printf("%d\n",result);
}
void Sum2(int nValue1, int nValue2, int& nResult)
{
nResult = nValue1 + nValue2;
}
//결과값 : 24
- 이렇게 되면 main 함수에 있는 result 라는 변수의 주소값을 이용해서 직접 변수 안에 함수의 결과값을 저장할 수 있다.
- nResult 변수의 주소값을 가져와서 그 주소에 해당하는 변수라는 바구니 안의 내용을 바꿀 수 있다.
- 나중에 포인터(pointer)라는 개념을 배우면 더 쉽게 이해할 수 있다.
함수의 반환
- 함수는 기본적으로 return 명령어를 사용해서 값을 반환하게 된다.
- 함수를 호출한 대상한테 값을 전달하게 되고, 반환 형태에 정의된 형태로 값을 반환하게 된다.
- 'void' 라고 반환 형태가 정의된 함수는 return; 만 작성하거나 작성하지 않아도 무관하다. 반환값이 없다는 의미!
- return은 함수 내에서 한 번만 호출하는 것이 바람직하다.
함수 오버 로딩 ( 함수 오버 로드 )
- 함수의 이름을 중복해서 작성하게 되면, 반환 형태는 상관없이 매개변수 만으로 같은 이름의 함수를 구분하게 된다.
- 즉 매개 변수의 형태를 다르게 함으로써, 이름은 같지만 엄밀히는 다른 함수가 만들어 지는 것이다.
- 입력한 매개변수에 따라 실행되는 함수가 다르게 된다. 기능은 같지만 매개변수와 반환 값의 형태가 다를 때, 주로 사용하게 된다.
int Sum(int nValue1, int nValue2);
float Sum(float fValue1, float fValue2); //함수의 이름은 같지만, 매개 변수와 반환값의 자료형이 다르다.
int main(){
Sum(10,20);
Sum(10f,5.5f);
}
int Sum(int nValue1, int nValue2)
{
return nValue1 + nValue2 //int형의 값을 반환
}
int Sum(float fValue1, float fValue2)
{
return nValue1 + nValue2 //float형의 값을 반환
}
//결과값 : 30 , 16.000000
728x90
'c언어 프로그래밍' 카테고리의 다른 글
포인터와 구조체 (3) | 2024.04.20 |
---|---|
재귀 함수와 배열 (0) | 2024.04.02 |
반복문과 지역/전역 변수 (4) | 2024.02.24 |
연산자와 제어문 (2) | 2024.02.22 |
C언어 변수와 자료형 (1) | 2024.02.19 |