wodus0129   3년 전

35줄에서 return; 은 어떤 역할(단순히 반환한다고 하지 말아주세요)을 수행하고, 43줄에서 return length == ARRAY_SIZE;는 어떤값을 어떻게, 왜 반환하는지 설명해주실수 있나요?

kchranger   3년 전

저도 많이 아는것은 아니지만 제가 지금까지 이해한 걸로 설명 드릴게요 혹시 틀린부분이 있다면 고수님들 수정 부탁드립니다.

return, 쉽게 보면 함수를 끝낸다는 의미입니다. 수학에서 함수 f(x) = y 라는 식을 봤죠?, return은 여기서 y를 담당 합니다.

어떠한 값이 들어 갔고 그 결과 y를 도출한다(함수를 끝낸다, return을 한다)이죠

main 함수는 말 그대로 프로그램의 중축이 되는 함수이죠, main이 끝나면 프로그램이 끝나는 겁니다.

함수 정의 Add가 있죠? Add도 함수입니다. 하지만 main이 아니죠 그 말은, Add 라는 함수에 어떠한 값 x(인자)를 넣었을 때 y(return)라는 값을 내놓는 거죠, 그리고 Add함수가 끝난다고 해서 프로그램이 종료되는 것이 아닙니다. main 함수가 아니기 때문이죠.  19~24줄 있죠? Add()함수를 사용한 것입니다. Add 함수는 뭐냐?

밑에 함수 정의라고 되더있는 밑에 부분 있죠? 그 부분으로 가서 Add 함수에 나와있는 명령들을 수행한다는 것입니다.

4번줄 보시면 매크로를 사용하여 ARRAY_SIZE를 5로 정의 내렸구요 ARRAY_SIZE == 5 라고 생각하시면 됩니다. 그래서 list 배열 크기는 5이고, length는 전역 변수 이기 때문에 어느 함수에서든지 사용이 가능 합니다.

Add 함수 들어가자 마자 다시 FULL 함수를 실행하네요 밑에 Full 함수가 어떻게 구성되어 있는지 보이죠?

  바로  return을 해주네요 length == ARRAY_SIZE; 라고 나와있는데 length는 아직 0입니다. 그러니 length == ARRAY_SIZE는 거짓이 되죠 0과 5는 같지 않으니까요, 거짓이니까 0을 반환해 줍니다. 그럼 다시 Add함수로 와서 if(0)이 되는 겁니다. 거짓 이니까 puts가 아닌 데이터 추가 부분으로 넘어가겠죠 여기서 배열 list에 값을 넣고 void이기 때문에 return 값 없이 함수를 끝냅니다. 그리고는 다시 main으로 넘어가서 Add(list,20)을 실행 하겠죠 반복입니다. 결국엔 list배열에는 10 20 30 40 50이 저장이 될거고  Add(list,60)이 실행되면 list is full 이 출력 되겠죠

star007686   3년 전

함수의 이름과 연관지어 설명해보자면

Add 함수에서의 return은 함수를 종료시키겠다는 의미 입니다. 다시말하면 밑에 있는 코드들을 실행하지 않고 함수를 끝낸다는 의미이죠

Full 에서 retrurn은 ARRAY_SIZE와 length가 같은지 비교해서 같으면 1 다르면 0을 반환합니다. 현재 list의 길이가 배열의 크기와 같은지 즉, 배열리스트가 가득찼는지 확인하는 용도네요.

다시 Add로 돌아가서, if(Full())을 실행할 때, 배열리스트가 가득찼다면 if(1)이 되어 리스트가 가득찼다는 메세지를 출력하고 데이터 추가 없이 함수를 종료하고

배열리스트에 공간이 남아있으면 if(0)이 되어 if문 실행없이 list에 데이터를 추가하게 됩니다. 

댓글을 작성하려면 로그인해야 합니다.