안녕하세요, 어서 오세요
이번 강의에서는 함수에서 데이터 반환에 관해 얘기할 거예요
네 지금까지 우리는 함수가 뭔지 왜 유용한지도 알고 있었죠 왜 유용한지도요
함수를 정의하는 법과 데이터를 함수에 전달하는 법을 배웠습니다
다음은 함수에서 데이터를 반환하는 방법인데 이것도
아주 유용해요
네 네 아까 예제에서 두 숫자를 곱했을 때 단말기 계산
결과가 곱하기 함수에 나타났어요
우리는 여기에 printf를 가지고 있었죠.
그리고 아까 간단한 함수를 사용한 예도 있었죠
방금 datain사이드 함수를 출력했어요
네 네 밖으로 꺼내는 대신 착하게 하고 싶었어요
한 가지 이상의 역할을 하니까요
네 프린트까지 됐어요 데이터를 반환하고
메인 함수에서 출력했어요
여러분의 계산이 항상 표시되는 건 원치 않을 수도 있어요
네 이 함수는 좀 더 유연하고 일반적이 됩니다 따라서
데이터를 리턴할 수 있다면 더 많이 사용될 수 있죠
C#의 특정 구문을 함수에서 리턴할 수 있어요
네 이것에 좀 익숙해져야 합니다 왜냐하면
마지막에 메인 함수를 기억하세요 많은 예제에서 데이터를 꽤
많이 반환합니다
이런 것에 좀 노출된 거죠
그게 무슨 뜻인지 아직 잘 모를 뿐이죠
기능의 영구적 형태를 다시 한 번 살펴보죠
함수 헤더를 기억하세요
처음 정의된 단어가 return type이었죠
그리고 이름과 파라미터들을 괄호 안에 쉼표로
분리했죠
이미 tname과 매개 변수를 알고 있죠
첫 번째는 return type이에요
return type은 함수가 반환한 값의 데이터
타입을 지정해요
함수는 어떤 데이터든 반환할 수 있어요
컴파일러에게 만약 여러분이 반환할 데이터가 어떤 종류인지 알려주는 거죠
int, float, 더블whatever죠 함수 헤더에서
명시해야 해요
반환 유형이요
네 여기서 본 반환 유형은 함수로 반환될 유형의 값을 지정할
수 있어요 C에서 합법적인 유형이면요
주요, 더블, 플로트 등등이요
하지만 열거와 포인터도 반환할 수 있어요
포인터에 관해 얘기한 적은 없지만 포인터를 리턴할
땐 아주 유연하죠
반환 유형인 Canalso는 회피 유형이죠
void라는 키워드가 자주 나와요
이제 그 의미를 알겠어요
어떤 데이터도 반환되지 않는다는 뜻이죠
함수를 실행하기 전에 void가 보이면 어떤 데이터도
리턴할 수 없어요
매개 변수 목록에 빈틈이 보이면 데이터를 넘긴 게 아니죠
네 Void는 일반적인 키워드예요 반환 유형과 매개 변수를 위한 키워드죠 void를
포인터로 사용할 수도 있습니다 그 부분은
나중에 다루죠
하지만 공허함은 침묵의 표현이죠
네 아무것도 안 넣는 대신 void를 넣는 이유는
프로그램이 더 읽기 쉽기 때문이에요
네 네 사실 함수에 데이터를 전달할 때 전달되는
데이터가 없으면 빈 괄호로 할 수 있어요
안에 빈 곳이 있으면 읽기 쉬워요
반환 유형도 마찬가지지만 그건 공백 유형이어야 해요
텅 비게 둘 순 없죠
빈다는 건 반환할 데이터가 없다는 뜻이죠
환불서예요
네 네 어떤 데이터가 반환될지 식별하는 방법에 관해 얘기했는데 실제로 데이터를
어떻게 반환할까요?
함수의 본체 내에 뭘 반환할 건지 말할 수 있는 문장이
있어야만 해요
왜냐하면 인체는 많은 데이터를 가질 수 있거든요
네 로컬 변수가 있을 수 있어요 뭐든 될 수 있죠 네 특정 계산을
할 수도 있고 다중 계산을 할 수도 있어요 뭘 반환하고 싶으세요?
다행히 return이라는 키워드가 있는 문장이 있어요
네 네 변수 이름이나 식이 없는 반환을 제공하면 함수에서
그냥 나온다는 뜻이에요
일종의 순환 고리 같은 거죠
기능에서 반환하는 거죠
이런 오작동을 제공하면 보이드라고 정의할 수 있죠
경기장을 나갈 때 확실히 알 수 있죠
함수 하단 한 곳에서만 반환돼야
해요
그 얘긴 나중에 하죠 기능상에선 안 돼요
ina 함수가 보이면 그 함수에서 빠져나온다는
뜻이죠
네 아래에 두는 것이 좋은 이유는 함수를 나갈 때 명확하기
때문입니다
네 리턴도 여러 번 한다면 기능 전체를 통해 데이터를 리턴한다고
해도 언제 리턴할지는 몰라요
오작동할 때 저는 변수를 만들고 하단으로 한
번만 돌아와요
네 함수에서 뭔가를 반환해야 할 경우 혹은 함수에서 특정 if문을 반환해야 할
경우에요 변수를 설정하고 아래에
반환하겠습니다
네 반환이 있는데 아무것도 없다면
데이터 반환 없이 함수를 떠나는 거죠
이건 많이 사용되지 않아요
오작동할 때만 쓰고 값은 안 돌아와요
보다 일반적인 thereturn문은 어떤
변수나 어떤 식을 리턴하죠
x + y 또는 반환 x요
네 네 이 return 구문 형식은 함수 헤더에서 지정된 return type과
함께 사용돼야 합니다
네 int를 반환하면 어떤 변수나 식을 반환하든 int가 돼야
해요 그 변수나 식이 뭐든요
int를 반환하려면 int로 평가해야 해요
2배가 되면 값이 2배가 되죠
기억하세요, 다양한 유형의 데이터를 반환할 수 있어요
네 호출 프로그램에서 돌아오는 값은
식이 평가될 때 나오는 값이에요 그래서
네 네 x + y가 있다면 그 식의 결과를 반환하는 거죠 함수 선언과 같은
형식이어야 합니다 제가 말씀드렸듯이요
네 함수 본체에 구문은 있지만 값을 반환하지
않는 함수는 void라는 반환 유형을 가져야 합니다 어쩔 수 없어
그걸 잃을 순 없어요
그게 없고 어떤 데이터도 리턴하지 않는다면
오류 메시지가 나올 거예요
네 네 프로그램을 컴파일하고 그게 void return 유형의 함수를
포함하면 값을 반환하려는 거죠 컴파일 오류요
Void는 데이터 반환이 안 된다는 뜻이고 변수나 식을 뒤집으면 안 돼요
네 함수에 void return type이 없고
유효한 return type이 있다면 오류 메시지가 나오게 됩니다
컴파일러가 지정된 유형 말고 다른 유형을 반환하려 하거나 그냥 아무것도
없이 반환하려 한다면요
그러니 집중하세요
오작동 선언 초반의 키워드가 굉장히 중요하거든요
네 네 함수의 구현에 직접적으로 영향을 미칩니다 컴파일은 여러분이 잘못해서 올바른 데이터를
반환하지 않거나 어떤 데이터도 반환하지
않으면 알려줍니다 혹은 반환할 필요가 없는데도
알려줍니다
네 식이 다른 값을 만들어내면 함수의 반환 유형과
다른 유형이면 헤더 c가 변환을 시도할 거예요
컴파일러가 변환하려고 할 거예요
그래서 그래서 예를 들어 부동 소수점 수를 반환하는데 식이 I + x에 int가
2개라면 부동 소수점 수로 변환할 거예요
네 네 그걸 IT로
변환할 겁니다 것인 거죠,
그 케이스에선 데이터를 잃겠지만 변환을 할 거예요
변환이 항상 가능한 건 아니에요
불가능할 경우 컴파일러에 의해 오류가 발생할
수 있어요
네 문자열을 반환해야 하는데 int를 반환하려고
하거나 열거형을 반환해야 하는데 열거형을
반환하려고 하면 컴파일러에 불평할 거예요
네 하나 이상의 리턴 문 함수를 가질 수도 있어요
왜 하면 안 되는지 간단히 말씀드렸죠
하지만 당신은 할 수 있어요
여러 개의 리턴오버가 있을 수 있어요
따라 하기 코드가 더 어려워져요 함수에서
도약해야 하니까요
네 반환할 경우 반환 값이 여러 개라면 다시
한 번 확인하세요 뭔가를 반환하는 함수가
있다면 그 형식의 식이나 값을 가지거나 변환될 수 있다는 것을요
네 이제 데이터 전달과 반환에 관해 얘기했으니
함수를 호출하는 법을 알았으니 호출에 관해
몇 가지 더 얘기할게요
네 네 함수 이름을 사용해서 함수를 호출하고 괄호 사이에 있는
인수를 넘겨서 함수를 호출하죠 알고 있습니다 지금까지는
알고 있지만 공식적으로 말씀드리고 싶습니다 함수를 호출할 수
있습니다
네 함수를 호출할 때 괄호 사이에
명시된 인수의 값은 함수 안의 매개 변수에
할당될 거예요
매개 변수는 데이터 타입과 함께 대표변수예요
그런 다음 함수 본문에 변수 바니 측면을 사용할 수 있죠
네 함수가 특정 코드를 출력하거나 실행할 때 그 값을 인수로 사용합니다 앞서 말씀드린
것처럼요
네 함수를 호출할 때 명시하는 인수는 형식에서 일치해야 하고 함수
헤더에 매개 변수가 있을 땐 숫자, 시퀀스가 명시돼야 하죠
맞아요 질서도 중요하죠 전 그걸 강조한 게 아니라 이렇게 말한 거예요
int x 더블 y라고 하면 먼저 int를 넘겨야 해요 그런 다음 더블이죠
더블과 int에서는 패스할 수 없어요
순서가 아주 구체적이에요
그러니 데이터를 인수로 넘기도록 하세요 함수를 호출할
때는요 함수가 매개 변수 목록의 함수 헤더에서 선언된 것과 같은 방식으로요 올바른
형식을 전달합니다 이것도 마찬가지입니다
함수를 호출해 데이터 리턴 배정하고요
네 함수가 데이터를 반환하면 그 데이터를 할당할 수 있어요 등호
연산자와 반환 이후를 이용해서요 혹은 로컬 변수에 저장할 수도 있죠
원하면요
표정과도 잘 맞을 거예요
return x++y라고 할 수도 있고 return x나 상수를 반환하라고
할 수도 있죠
이 예제는 반환된 데이터를 할당할 때 호출을 호출한
후예요
이렇게 말할 수 있죠 int x = my function call 이렇게요 어떤
함수가 반환하든 x에 할당됩니다
그 함수로 x + y를 반환하면 x + y의 결과가
x에 할당되죠
네 함수 호출에서 반환된 데이터를 할당할
수 있습니다 등호의 왼쪽에 변수를 두고 호출
함수는 오른쪽에 두기만 하면 됩니다
네 호출 함수는 호출 함수로부터 반환된 값을 인식하거나
처리하지 않아도 돼요
거기서 그런 일 할 필요 없어요
네 함수가 데이터를 리턴하는데 그 데이터에 신경 쓰지 않는다면 등호가
필요 없을 거예요 함수를 호출할 수 있습니다
네 말이 안 되죠 데이터를 반환하는 거라면 검토는
해야 할 테지만 그럴 필요는 없거든요
함수를 호출하고 데이터를 처리하지 않으면 컴파일러가
구구절절 설명하지 않을 테니까요
함수 호출에서 반환된 데이터를 어떻게 사용하느냐는
여러분께 달렸죠
invokinga 함수와 함수에서 데이터를 반환하는
예가 있어요
이 예시에서는 두 개의 숫자를 곱해 주세요
네 이건 전에 본 예제와 똑같지만 이전 예제는 데이터를
반환하지 않았죠
이전 예제는 표시된 출력이죠
이 예제에선 모든 출력을 표시하죠
데이터를 반환하고 메인 함수에서 그 결과물을
보여주고 있어요
2개의 숫자를 곱하고 매개 변수인 2개의 정수를 넣으세요
두 정수를 곱하세요
네 그리고 그리고 이 금액이나 값을 프린트하는 대신 return
키워드를 쓰고 결과라는 이름의 변수를 명시합니다 끝에는
세미콜론을 쓰고요
함수 본문에 return 키워드인사이드가 있으면 해당 데이터를
반환하는 거죠
여러 곳에서 할 수 있다는 걸 기억하세요
하지만 원밸류로만 반환할 수 있죠 다수의 값은 반환할 수 없어요
네 반환 키워드가 여러 곳에 있다면 if문이나 루프 안에
있어야 해요 그때 바로 뛰쳐나가는 거니까요
네 반환이 있고 그 다음에 다른 반환이 있으면 오류가
생길 겁니다 두 경우 모두 반환이 2개라고 할 테니까요
항상 토레술트를 돌려보내잖아요 그러면 안 돼요
하지만 반환 키워드도 중요해요
변수를 리턴하는 거죠
네 그리고 주요 함수를 보면 반환된 데이터는 결과라는
또 다른 로컬 변수에 할당되고 있어요
여기서 같은 이름을 사용하고 있는 게 보이시죠
네 함수 범위와 관련 있는데 다음 강의에서
다룰 거예요 지역 변수 대 전역 변수입니다
네 이번 강의에서는 이 함수에서 2개의 숫자를 곱하면 반환되는
데이터가 나온다는 사실만 알아두면 됩니다
네 어떻게 반환하죠? return 키워드로 반환하고
식의 변수로 반환하죠
네 또한 2개의 숫자를 곱하면 함수 헤더 상단에 반환
유형을 지정합니다
int를 반환하는 거죠
인트를 반환해야 해요
메인 함수에서 데이터를 할당할 때 int에
할당하는 것도 보이실 거예요
아주 쉽게 할당할 수 있죠 등호 연산자를 갖고요
맞아요 데이터가 중요하지 않다면 두 개의 숫자 곱하기를
호출하고 아무것도 안 해도 되죠 하지만
그 함수에서 데이터를 받은 다음 printf 함수를
이용해 그걸 프린트해요
그래서 데이터가 더 잘 들어맞죠
함수 안에서 실제로 결과를 보여주고 있진 않죠
네 결과를 공개하고 싶지 않을 때도 있어요
두 자리 숫자만 곱하고 나누기를 원할 수도 있어요
융통성 있게 데이터를 전달하고 반환하는 건 중요한 일이죠
이건 간단한 예시예요
다음 과제에서 더 많은 걸 알게 될 거예요