return이라는 것은 2가지 의미를 가집니다.

-함수를 빠져나간다.

-값을 반환한다.

제가 void에는 return을 쓰면 안된다라는 느낌으로 설명이 적혀있는 것을 보고 매우 당황을 하였지만 수정은 하지 않았습니다.

이유는 뭐 어떤 방면에서는 맞는 말이 될 수도 있으니 변수가 있다면 어짜피 return을 따로 강좌를 작성할 때 하는 것으로 하자는 느낌으로 하였습니다.

그래서 저는 이번 시간을 이용하여 다시 말하도록 하겠습니다.

void가 있다고 해서 return을 쓰지 못하는 것은 절대로 아닙니다.

void인 반환형에서도 return이 쓰이는 경우가있습니다.

이렇게요

1
2
3
4
void NRtT(int num) {
  if (num < 0) {
    return;
  -----
cs

(출처 : 윤성우 - 열혈 C 프로그래밍)

반환값이 명시되어 있지 않은 경우의 코드이다.

위의 코드같은 경우는 반환하는 값이 없이 빠져나갈 때 사용을 한다.

함수를 빠져나가는 목적이라면 void에서 return이 사용이 된다고 하더라도 상관이 전혀 없다.


값을 반환 한다면 return에 이어서 오는 부분에 하는 것이다.

이어서 오는 부분이 없는 경우는 위에 코드와 같은 경우가 되는 것이다.


블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

저번 시간에 말을 하였듯이 그러면 어떤 경우에 어떻게 해야하는 지 그것에 관하여 설명을 하도록 하겠습니다.

return이라는 것이 원래 돌려보낸다라는 것입니다.

나중에 따로 강좌를 적겠지만 미리 한번 거론을 하자면 return 0;라는 것도 0번 줄로 보낸다라는 느낌이거든요.

그런 관계로 return이라는 문법이 쓰이는지 안 쓰이는지에 따라서 쓰인다면 반환하는 값이 있다라고 해서 시작하는 구간이 void가 아닌 int가 쓰이게 되는 것입니다.

그러면 언제 (void)를 써야 하는 지 그것이 궁금할 것이라고 저는 추론을 합니다.

그래서 설명을 드리자면 (int dd)하면서 시작할 때 int라는 것은 함수를 시작한다! 가 아닌 전달인자라는 것이됩니다.

전달인자라는 것이 없으면 (void)를 쓰게 되는 것입니다.

그렇다면 그 전달인자라는 것이 무엇인가??

전달인자라는 것은 다른 함수와 연결이 되는 느낌의 변수들을 전달인자라고 합니다.

//확실한 것은 아니나 그러한 느낌이 있다보니 일단 이렇게 설명하겠습니다. 100% 확신하고 받아들이시지 마세요!

그리고 마지막으로 함수라는 것은 이미 한번 정의 된 경우 언제든지 다시 호출이 가능해진다.

이번에는 간단하게 진행이 되었습니다.

다음강좌에서 보도록합시다.


블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,

으음... 시간이 매우 많이 늦어진 관계로!!! 빠르게 작성을 하도록 하겠습니다.

블로그 강좌 올라가는 날자 잡소리니 보고싶은 사람만 보시도록 합시다.

이전 시간에 완성 했던 코드를 이번 시간에도 불러와야 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int duhagi(int num1, int num2) {
  return num1+num2;
  }
void ShowResult(int num) {
  printf("덧셈결과 : %d \n", num);
  }
int main (void) {
  int result;
  result = duhagi(34,  57);
  ShowResult(result);
  return 0;
}
cs

그래서 일단 불러왔습니다. //이번에는 무사하기를 빌며

많은 시간이 지나서 과연 기억을 하실지는 의문이지만 기억을 하셔야 합니다.

못하시면 그거는 그거 나름 문제가 있습니다.

이번 시간은 살짝 같이 진행을 해야하지 않을까 합니다.

//그래서 이 강좌는 2일전과 어제의 분량입니다.

아무튼! 진행을 하자면 일단 우리는 우리가 아무 숫자나 더하는 것으로 하겠습니다.

그러려면 이미 정해진 숫자보다 즉흥적으로 막 누르는 편이 아마 더 좋지 않을까 합니다.

그러기 위해서는 scanf_s가 필요하리라고 믿습니다. 이 함수는 인자는 전달안하고 반환만 하는 것입니다.

1
2
3
4
5
int PlayerNum() {
  int num;
  scanf_s("%d"&num);
  return num;
}
cs

이렇게 scanf_s를 불러왔습니다.

이제 이것을 원래 공식에 넣으면 됩니다.

//그런데 왜 저기에 void가 없는가?? 원래 void는 생략이 가능한 녀석이라 이번 시간에는 적지 않도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int duhagi(int num1, int num2) {
  return num1+num2;
  }
void ShowResult(int num) {
  printf("덧셈결과 : %d \n", num);
  }
int PlayerNum() {
  int num;
  scanf_s("%d"&num);
  return num;
}
int main () {
  int result, num1, num2;
  num1 = PlayerNum();
  num2 = PlayerNum();
  result = duhagi(num1, num2);
  ShowResult(result);
  return 0;
}
cs

자! 이제 거의 다 왔습니다 이렇게 나올 경우 이게 무엇인지 잘 모를 것입니다 이유는!

이 상태로 실행을 하게 되면 바로 입력하는 파트가 됩니다.

그러니 우리는 이제 입력하라는 말을 해야 합니다.

구로나 인자전달과 반환하는 값이 둘다 없는 것을 만들도록 하겠습니다.

//어라 두번 올라갔.... 이거 무시해 주세요 삭제가 안되욬ㅋㅋㅋㅋ

1
2
3
4
How2UseDis() {
  printf("두자리 자연수를 2개 입력을 하세요!\n");
  printf("그러면 그 두개의 자연수가 합쳐져서 나옵니다.\n");
}
cs

이렇게 만들었습니다.

그러면 이것도 같이 만들도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
int duhagi(int num1, int num2) {
  return num1+num2;
  }
void ShowResult(int num) {
  printf("덧셈결과 : %d \n", num);
  }
int PlayerNum() {
  int num;
  scanf_s("%d"&num);
  return num;
}
void How2UseDis() {
  printf("두자리 자연수를 2개 입력을 하세요!\n");
  printf("그러면 그 두개의 자연수가 합쳐져서 나옵니다.\n");
}
int main () {
  int result, num1, num2;
  How2UseDis();
  num1 = PlayerNum();
  num2 = PlayerNum();
  result = duhagi(num1, num2);
  ShowResult(result);
  return 0;
}
cs

이렇게 됩니다.

흐음 다음 시간에 언제 int를 쓰는지 언제 void를 쓰는지 알아보도록 하겠습니다.

블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,