게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 질문좀할께요ㅜㅜ
게시물ID : jisik_194228짧은주소 복사하기
작성자 : 콩장
추천 : 0
조회수 : 248회
댓글수 : 4개
등록시간 : 2015/06/01 00:16:51
이제 시작한지 얼마안되서 기초중에 기초적인 웃음만 나오는 질문일지 몰르겠지만
함수가 좀 헷갈리는거같아서요..
전역함수의 예제 인데 전역함수는  모든 영역에서 접근을 할수있다알고있습니다.
프로그램을 실행해보니 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버전
맨위로▲
공지 운영 자료창고 청소년보호