참조에 의한 인수전달, 주소에 의한 전달

2023. 1. 16. 12:00c,c++

주소에 의한 전달은 C, C++ 에서

void foo(int* ptr)
{
	printf("%.16X\n", &ptr);
    printf("%.16X\n", ptr);
}

ptr 이라는 pointer to int 를 전달한다.

int main(void)

{
       int x = 5;
       int* ptr = &x;
       printf("%.16X", ptr);
       printf("%.16X", &ptr);
       foo(ptr);
}

했을 시에

x를 담는 변수의 주소는 달라진 것을 볼 수 있다. 이것으로 봤을 때 주소를 복사해서 전달하는 것이다.

 

참조에 의한 전달은

 

C++ 에서 

#include <stdio.h>
void foo(int* &ptr)
{
    printf("%.16X\n", &ptr);
    printf("%.16X\n", ptr);
}
int main(void)
{
    int x = 5;
    int* ptr = &x;
    printf("%.16X\n", &ptr);
    printf("%.16X\n", ptr);
    foo(ptr);
}

참조변수 기호& 를 달아주면 주소 복사 없이 그대로 전달된다. 원본 자체가 되는 것이다.

 

'c,c++' 카테고리의 다른 글

Dereferencing null pointer  (0) 2023.10.23
extern  (0) 2023.01.06
#ifdef, endif, #pragma once, #ifndef  (0) 2022.09.19
맨날 헷갈리는 assert 함수  (0) 2022.08.19
[C언어] 포인터 및 메모리 정리  (0) 2022.08.18