C

매개변수에 전역변수

GunwooYun 2022. 5. 13. 00:39

전역변수는 함수들이 공유하면서 사용하는 변수이다. 전역변수를 수정하기 위해서는 굳이 매개변수에 넣을 필요 없이

함수안에서 바로 호출이 가능하다. 나는 함수의 매개변수로 전역변수를 넣어도 관계없을 것이라 생각했다. 하지만 달랐다.

#include<stdio.h>

int var = 1;

void test_func(int v){
    printf("global variable parameter address in func : %p\n", &v);
    printf("global variable address in func : %p\n", &var);
    v++;
    printf("v++ : %d\n", v);
    printf("var : %d\n", var);
}

int main()
{
    printf("global variable address : %p\n", &var);
    test_func(var);
    printf("var : %d\n", var);

    return 0;
}

 

위 코드에서 함수의 매개변수로 전역변수를 넣어준다. 실행결과를 보면 전역변수의 주소값은 매개변수로 받은 전역변수의 주소값과는 다르다는 것을 알 수 있다. 그러므로 전역변수는 파라메타 없이 바로 사용해야한다.