#include <iostream>
// 레퍼런스는 사실 포인터다
// 출력함수를 define해서 좀 더 편하게 사용한다
#define LOG(x) std::cout << x <<std::endl
// call by value : 변수 값을 복사를 한다
// void Increment(int a)
// {
// ++(a);
// }
// call by reference 1유형 : 주소 값만 넘겨준다
// Increment(&number); number 주소를 가져온다
// void Increment(int* a)
// {
// ++(*a);
// }
// call by reference 2유형 : 주소값을 넘겨준다
// Increment(number); :number 주소를 가져온다
void Increment(int& a)
{
++(a);
}
// C에서는 포인터로 가져오는 방식이었으나 CPP에서 레퍼런즈 참조 가능해짐
void SWAP(int& x, int& y)
{
int temp = y;
y = x;
x = temp;
}
int main()
{
// sizeof(자료형, 변수이름)
int number = 10;
LOG(number); //편리한 출력
//포인터
//null reference exception
int* intPointer = nullptr; //int* intPointer = NULL; //int* intPointer = 0;
intPointer = &number;
int& intRef = number;
intRef = 200;
LOG(intRef);
LOG(number);
LOG(intPointer);
//레퍼런스 (참조, 메모리 주소값)
Increment(number);
LOG(number);
int a = 10;
int b = 20;
std::cout << "스왑전 a, b 값\n";
LOG(a); LOG(b);
//a<->b 스와핑
/*int temp;
temp = a;
a = b;
b = temp;
*/
SWAP(a, b);
std::cout << "스왑후 a,b 값\n";
LOG(a); LOG(b);
system("pause"); //종료 전에 잠시 대기하는 명령어
}
0 comments:
댓글 쓰기