참조에 의한 인수전달, 주소에 의한 전달
2023. 1. 16. 12:00ㆍc,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 |