이제 시작한지 얼마안되서 기초중에 기초적인 웃음만 나오는 질문일지 몰르겠지만
함수가 좀 헷갈리는거같아서요..
전역함수의 예제 인데 전역함수는 모든 영역에서 접근을 할수있다알고있습니다.
프로그램을 실행해보니 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;
}