본문 바로가기
c언어 프로그래밍

입력과 함수

by 부어잉 2024. 3. 16.
반응형

 

콘솔창에서 입력받기

 우리가 이제까지 했던 출력은 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