프로그래밍

 3198, 1/160 회원가입  로그인  
   d4rkang3l
   c언어 반환값 매개변수

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


c언어를 이론을 하면서 매우 궁금한건데요
제가 코드를 짜면 기본적으로
int main(void) 이렇게 쓰게
뭔가 습관이 들어있었는데 요즘 혼란스러워져서요ㅜ

함수정의 부분 막이런데 보면
반환값 함수이름(매개변수)

여기서 함수정의 할때 빼고는 반환값에 무조건 void를 사용해도 상관없는건가요?

그리고 매개변수도
만약 int add(int a,int b)
라고치면 이렇게안하고 그냥 함수정의 내부에서
int add()
{
     int a,b;
이런식으로 선언해주면 안되는건가요?

  Hit : 10169     Date : 2011/05/18 08:33



    
U_SoRang 1. 쓰신대로 add()하시고 그 안에 a, b를 선언하게 되면 add(3, 2); 라는 문법을 못 쓰게 됩니다.
(call by value 검색.)

2. 함수정의 = 사용하는 함수 정의
(처음 정의할 때와 사용하는 함수는 문법이 똑같아야 함.)
2011/05/18  
7evenLeaf 음.. 쉽게 말해서
add(int a, int b) 는 함수 사용시
add(1, 2) 이런식으로 사용했을때 1이 a 로, 2가 b로 전달되는 것입니다.
근데
add() 이렇게만 선언하면, 사용할때도 add() 이렇게만 사용해야 하죠,
add함수 안의 int a, b는 add함수 내에서 사용하는 지역변수를 선언한 것 뿐입니다.

윗분 말씀때로 call by value를 검색하시면
더 많은 정보를 얻을 수 있으실꺼에요ㅎㅎ
그럼 열공하시길,
2011/05/18  
KRR 윗분도 설명을 잘 해주셨는데요...
(아.. 사실 질문 해석이 더 어렵네요..)

전 무조건 void에 대해서 설명하겠습니다.

int main(void)를 습관적으로 쓰신다고 하는데..

main도 함수의 하나입니다.
(사실 제가 지금 부터 하는 말은 그닥 공부하는데 있어.. 별 의미는 없지만.. 이정도는 알고 쓰시면 우왕굳)

int add(int a,int b)처럼

int main(int argc, char *argv[])로
사용한답니다. 머.... 나중에 공부를 하다보면 자연스럽게 아실껍니다.

저걸 사용하는건..

cmd에 처넣기 위해..(이 문구도.. 장난스럽지만.. 아시면 제가무슨 소리 한지 알걸..)

머...

그런겁니다.
(죄송.. 덧글로 설명하긴 꽤 길어서. ..)

그리고
(원래 질문..)

윗분 말씀처럼..

함수 정의와 선언은 같아야 합니다.
그런 것이지요.. 머.. 선언조차 귀찮으시면.. main함수앞에.. 걍 걍 정의를 마구 갈겨 놓으셔도 됩니다.

다만 그걸 보시는 분의 뇌가 졸깃졸깃해지겠지만 말이죠..
2011/05/18  
KRR 아.. 두분으로 늘어났군요.. ㄷㄷ 2011/05/18  
/x7375696e6567 int add(){
int a;
int b;
printf("더하고자 하는 두 수를 입력 해주세요\n");
printf("입력(스페이스바로 구분해주세요~) :);
scanf("%d %d",&a,&b);
printf("더한 값은 %d 입니다.",a+b);
return 0;
}
이렇게 라면 가능하지요
2011/05/19  
d4rkang3l 답변들 감사하구요 !이해가됐네요 ㅎ
그리고 제가 질문한 하나는

반환값 함수이름(매개변수)<-여기서 함수정의를 안하고 그냥 메인함수를 작성할때는 void말고는 사용할 필요가 없지않을까해서요
2011/05/19