게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 질문좀 하겠습니다..ㅜㅜ
게시물ID : programmer_10658짧은주소 복사하기
작성자 : 콩장
추천 : 0
조회수 : 261회
댓글수 : 1개
등록시간 : 2015/06/01 00:24:37
옵션
  • 본인삭제금지
이제 시작한지 얼마안되서 기초중에 기초적인 웃음만 나오는 질문일지 몰르겠지만
 
함수가 좀 헷갈리는거같아서요..
 
전역함수의 예제 인데 전역함수는  모든 영역에서 접근을 할수있다알고있습니다.
 
프로그램을 실행해보니 num :0  num :3  num :4 가 출력되는데
 
(5)행에 num은 전역변수 선언시 초기화를 하지않았기때문에 0이 출력되고
 
(6)행에서 함수호출이되어서 3이 출력되고
 
(7)행에서 다시 0출력되고
 
(8)행에서 num 값을1 증가시키고
 
(9)행에서 num을 1증가시켜서 1이 출력되어야할꺼같은데
 
그렇지가 않아서요.
 
결국 실행값을 토대로 짜 맞추어보면
 
(5)행 에서 num 을 초기화하지않았으니 0 이 출력되고
 
(6)행 에서 함수호출이 이루어지고 함수의 정의부분을 보니 num +=val 때문에 지역변수num이
 
3의값을 갖아서  (7)행 에서 num의값이 3이 출력되고
 
(8)행에서 num의값을 1증가 시켰서
 
(9)행에서의 num의 값이 4가 되었다는건가요?
 
함수의대한 이해가 미숙해서 그런가 이해가 잘안되네요.
 
좀 이해가 안되는 부분이 (6)행에서의 함수 호출인 add(3);이 3을 출력하는건아닌가보죠?
 
함수의 정의 부분에 num의 값에 val을 대입한다는 의미만호출되는건가요?
 
add(3)호출이후에는 전역변후 num의값은 3으로 초기화가 되었다고 봐야하는게 맞는건가요?
 
다시 add(5);로 함수를 호출하게되면 지역변수 num의값이 5로 초기화가되는건가요?
 
친절히좀 부탁드립니다..ㅜㅜ
 
 

1.#include <stdio.h>
 
2.void add(int val);
 
3.int num;
 
4.int main(void)
 
{

5. printf("num: %d\n", num);
 
6.add(3);
 
7.printf("num: %d\n", num);
 
8.num++;
 
9.printf("num: %d\n",num);
 

return 0;
}
 
void add(int val)
{
  num +=val;
}
 
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호