책 처음부터 새로 보고 있는데요.. return문 이해가 힘들어요.
남
int a=10,b=20;
return a+b; 이렇게 종료하면 30은 변수 a에 간다는 말인가요? b로 간다는 말인가요? main으로 간다는 말인가요?
검색을 해봤는데 잘 이해가 안가더라구요. 어디로 되돌아가는지 궁금해요.
이왕이면 예를 쉬운 함수로 예로 들어주세요. int나 char 이런것들로; 와일문 이프문 이런건 하나도 모르기 때문에; 부탁드립니다;책내용 : 0이라는 값은 main 함수를 호출한 영역으로 반환될 것이다. main 함수는 우리가 프로그램상에서 호출하는 것이 아니라,
운영체제에 의해서 자동적으로 호출되는 함수이다. 따라서 반환된 0은 운영체제로 넘어가는데, 운영체제는 main 함수가
최종적으로 반환해 주는 값을 통해서 프로그램이 잘 종료 되었는지, 아니면 문제를 발생했는지를 파악하게 된다.
여기서 0을 반환한다는 것은 정상적인 종료를 의미하는것이다. 만약에 잘못된 종료를 하게 되는 경우에는 0 이외의
값을 전달하게끔 프로그램을 구현해야 할 것이다.
라고 적혀 있는데요. 여기 책내용이랑 이 사이트에서 리턴을 검색한 답 내용이랑 비슷하면서 약간 다른거 같아요.
다른거 같은데 이해는 잘 못하겠고 헷갈립니다.
아주 쉬운예로 개념좀 잡아주세요.. 아니면 그림이라도 ;;
-
새밝
int에다가 변수 a+b의 합... 그러니깐 30을 int에 돌려준다는 말일까요..?
-
과꽃
void main()으로 시작하는것도 있고 int main(void)로 시작하는것도 있어서 헷갈리네요..; 윤성우의 c언어 프로그레밍을 보고 있는데요.. 이 책에서는 int main(void)으로 시작하는데요. 그리고 리턴0이 비정상적으로 나가는거고 리턴1이 정상적으로 나가는거라고 대충 이렇게 되어있더군요. 디버거가 먼지도 아직 잘 모르겠지만 디버거를 하기위해서 일부러 리턴1을 해준다는 말도 있구요. 아직 많이 헷갈립니다.
-
에다
음.. 그러니깐
int main(void)
{
int a=10,b=20;
return a+b;
return 0;} 이렇게 하지말고
int main(void)
{
int a=10,b=20;
return a+b;
return a+b;} 이렇게하면 int a,b에 각각 30을 남긴다는 말씀인가요? -
전갈자리
return; : 현재 실행하고 있는 함수를 중단하고 함수를 호출한 곳으로 돌아간다.
return 0; : 현재 실행하고 있는 함수를 중단하고 함수를 호출한 곳으로 0을 돌려준다.
return 1; : 현재 실행하고 있는 함수를 중단하고 함수를 호출한 곳으로 1을 돌려준다.
return -1; : 현재 실행하고 있는 함수를 중단하고 함수를 호출한 곳으로 -1을 돌려준다.
return 2345; : 현재 실행하고 있는 함수를 중단하고 함수를 호출한 곳으로 -
창의적
return은 이렇게 설명할수 있습니다. 모든 것은 호출한 대상에게 뭔가를 반환 해야 합니다. 프로그램을 켜도 그것을 종료할떄 프로그램은 os에게 뭔가를 반환하죠.
c에선 이런식으로 반환합니다
int main(){return 0;}//여기선 잘 끝낫다는 의미로 0을 반환 합니다
위의 예에서 os를 main함수로 main함수를 일반 함수로바꿔 봅시다.
여기서도 어떤 일반 함수가 호출을 당햇으면 호출한 대상에게 뭔가를 반환한다는 것은 유효합니다.
예로든 r -
바람
저도 초보지만 아직 초반이라면 뒤에 함수부분을 보면 자연적으로 이해가 될수있어요. ㅎ...
그리고 말씀드리자면 main도 함수고 나중에 함수부부에서 자기가만들어서 쓰는것도 함수죠
함수를 호출한후 그 함수에서 일을 처리하고 호출한곳으로 값을 돌려주는데요 이떄 리턴에 a+b를 쓰시면
30이 함수를 호출한곳으로 반환된다는 뜻이죠.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |