저도 많이 아는것은 아니지만 제가 지금까지 이해한 걸로 설명 드릴게요 혹시 틀린부분이 있다면 고수님들 수정 부탁드립니다.
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 이 출력 되겠죠
wodus0129 3년 전
35줄에서 return; 은 어떤 역할(단순히 반환한다고 하지 말아주세요)을 수행하고, 43줄에서 return length == ARRAY_SIZE;는 어떤값을 어떻게, 왜 반환하는지 설명해주실수 있나요?