프로그래밍

 3198, 1/160 회원가입  로그인  
   qhrkd93
   c언어의 아주 기초적인거 질문좀 드릴꼐요;;

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6279 [복사]


아 제가 학교에서 대충배워가지고;; 헷갈려서 글을 쓰게됫네요

첨에

#include<stdio.h>

int main ()
{

return 0;
}

이런식으로 하라고배웠거든여 ?

그런데 해커스쿨 강좌를 보니깐 int main()에서 int 를 빼고 main()만 적으셧더라고요
그래서 int 지우고 아래 return 0;지우고 실행하니까 이것도 그대로 실행되더라고요;

int main()
에서 int는 뒤에 return 0;때문에 쓴다고 배웟는데 그 이유를 설명해주지 않으셔서 아직까지 모르네요;;

이게 궁금한대 제가 c언어 시작하긴했는데 좀 엉성하게 배워가지고 기본개념이 없어요;

쉽게 그리고 한편으론 자세하고 깊게 알려주셨으면 합니다. 기초를 제대로 잡을려고 다시 공부할려는 학생으로서 말씀드리네요 ; ㅎㅎ

  Hit : 5092     Date : 2012/12/09 11:55



    
ka0r1 뒤에 가면 천천히 알 수 있는 내용인데... 일단 답변은 해드릴께요.
main은 함수이름이고 main앞에 나오는 int는 정수형으로 값을 반환하겠다는 겁니다.

int addsum(int a, int b);
{
return a+b;
}

int main(void)
{
.
.
.
printf("%d\n", addsum(10, 20));
.
.
.
}

위의 값은 10과 20을 인자로 넘겨서 30이 출력이 되는 프로그램인데요.
이렇게 위의 소스처럼 함수를 프로그래머가 만들 수도 있습니다.
그런데 여기서 의문을 가질 겁니다.
어째서 main 함수가 프로그램의 시작점인데, 반환하는 값(int)가 존재하느냐? 이겁니다.
그 해답은 바로 응용프로그램(애플리케이션)이 한차원위에 있는 운영체제(OS)에게 값을 반환한다는 겁니다.
모든 프로그램은 실행시에 운영체제가 관리감독하에 메모리에 올라가서
cpu와 기타 디바이스 장치등과 통신을 하면서 구동되게 됩니다.
return 0;은 0을 반환하므로서 운영체제에게 프로그램이 정상적으로 끝났다는걸 알리는 겁니다.
2012/12/10  
qhrkd93 흠 제가 아직 응용프래그램,운영체제,cpu.기타 디바이스장치 이런거에 대한 개념도 없고 배운게 없어가지고 일단 이런단어들이 나오면 어렵고 이해가 안가는 부분이 있긴한데 그래도 답변해주셔서 감사해요 차차 배우면서 이해갈 날이 올것이고
또 궁금한게 한 가지 있는데요
return 0;이 0을 반환하므로서 운영체제에게 프로그램이 정상적으로 끝났다는걸 알리는 것이라고 하셨는데
여기서
int main()
{
}
이런식으로 return 0;을 빼고 해도 정상적인 프로그램이 될 수 있나요 ???
2012/12/10  
ka0r1 네. 리눅스에선 겉으로 봐선 아무런 문제없이 돌아갑니다만... 속은 저도 자세히는 모르겠네요. 2012/12/10  
ka0r1 속은 자세히 모르겠다는 의미가... main() <- 이렇게 메인 함수를 쓰셔도 프로그램상에서 문제는 없지만i
nt형을 선언하고 값을 반환하지 않는다는게 문제가 될지 안 될지가 모르겠다는 말입니다.
2012/12/10  
qhrkd93 ㅎㅎ 감사합니다
자질구래한 질문에도 모두 답해셨네요 ㅎㅎ
좋은 정보 얻었습니다.
2012/12/10