(CS50)-프로그래밍 응용(함수와 리턴)

CS50 x edwith 강의를 들으며 정리한 공부 포스팅입니다.

출처

핵심 개념

  • 함수
  • 추상화
  • 매개변수
  • return
  • 지역변수
  • 전역변수

함수

  • 특정 목적을 위해 만들어진 재사용 가능한 코드

추상화

  • 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것.
    • 프로그램을 여러 개의 함수로 만들면 코드를 조직화하고 간단하게 만들수 있음

함수의 문법

#include

void sayHi(void)
{
    printf("Hi!\n");
}

int main(void)
{
    sayHi();
    sayHi();
}
  • 함수의 첫 행(void sayHi(void))은 세 부분으로 나눠져 있음

  • 첫째, 반환 자료형

    • 함수를 호출한 쪽에 출력값으로 반환해줄 값의 자료형
    • 반환할 값이 없을 경우 반환할 값이 비어있다는 의미로 void를 씀.
  • 둘째, 함수의 이름

    • 공백이 있으면 안되고, C에서 이미 사용하는 키워드는 쓸수 없음.
  • 셋째, 괄호안에 인자라고도 알려진 함수의 매개변수(parameter)를 넣어줌

    • 함수의 입력값이며 입력값이 없으면 void를 씀.
  • 이 첫 행 뒤에는 중괄호로 묶인 함수 코드가 작성됨.

  • sayHi 함수는 “Hi\n”을 화면에 출력하는 함수

  • main함수 안에서 sayHi 함수가 두 번 호출되고 있음(10, 11번째 줄)

  • sayHi함수는 매개변수를 받지 않기 때문에, 함수 호출시 괄호 안에 인자(argument)

    작성하지 않는다

  • 실행결과 “Hi\n”이 화면에 두 번 출력됨.

매개변수와 반환값

#include 

int square(int x)
{
	return x * x;
}

int main(void)
{
	printf("%d\n", square(2));
	printf("%d\n", square(4));
	printf("%d\n", square(8));
}
  • square함수는 x라는 하나의 정수를 매개변수로 받고 함수를 호출된 곳으로 정수를 반환

  • 함수의 반환값을 return이라는 단어로 명시

    • square 함수는 입력값 x를 자신과 곱한 후 값을 반환
  • 보통 return이 쓰여진 행이 함수의 마지막 행

  • main함수에서 square함수는 세 번 호출되는데 매번 호출될 때마다 함수가 실행되고

    매개변수에 대한 제곱 값이 함수를 호출한 곳으로 반환됨.

범위(Scope)

  • 지역변수

    • 함수 안에서 변수를 정의하거나 매개변수로 전달된 것들은 그 함수 안(지역)에서만

      유효함.

  • 위 코드에서 보면 x라는 변수는 main함수의 범위(Scope)안에 존재하지 않고

    오직 square함수의 범위 안에서만 존재.

  • 같은 논리로, main 함수에 정의된 어떤 변수도 square함수 내에서 접근할수 없음.

Comments