본문 바로가기
C++/함수

[C++] 함수의 값으로 주소를 입력받는 방법

by bigpicture 2022. 8. 16.
반응형

함수에 입력값으로 변수이름을 입력하고 연산을 수행하여도 변수 자체의 값을 바꿀 수는 없습니다. 변수로 부터 값만 전달 받고, 전달받은 값을 이용하여 연산을 하기 때문입니다. 그러나 함수의 입력값으로 변수이름이 아니라 주소를 입력받으면, 함수에서 변수에 직접 접근이 가능해집니다. 

먼저 함수 입력값으로 변수 이름을 입력받는 예시를 봅시다. 

#include <iostream>

using namespace std;


int my_fun(int var1)
{
    return var1=var-1;
}
    
    
int main()
{

    int A=5;
    printf("%d \n",my_fun(A));
    printf("%d",A);

    return 0;
}

//결과
//4
//5


함수에서 1을 빼는 연산을 수행해도 A값 자체가 바뀌지는 않습니다. 함수를 통해 A의 값을 변경하려면 A의 주소값을 입력받고, 해당 주소를 이용하여 A에 접근하여 값을 변경해야 합니다. 위 함수의 입력값은 아래와 같이 바꿔줍니다. 

void my_fun(int* var1)


입력값을 포인터형 변수로 바꿨습니다. 포인터형 변수에는 주소값이 저장됩니다. 어떤 변수의 주소를 입력받고 해당 변수 값을 100으로 바꿔주는 함수는 아래와 같습니다. 

void my_fun(int* A)
{
    *A=100;
    
}


A는 포인터변수이고 *A 는 포인터변수 A가 가리키는 주소에 저장된 값입니다. 아래는 전체 코드입니다. 

#include <iostream>

using namespace std;


void my_fun(int* A)
{
    *A=100;
    
}
    
    
int main()
{

    int A=5;
    
    my_fun(&A);
    
    printf("%d",A);

    return 0;
}

//결과
//100


함수의 입력값에는 변수 A의 주소인 &A를 입력해주면 됩니다. 

반응형

댓글