#include <iostream>
//레퍼런스는 사실 포인터다
//출력함수
#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);
}
void SWAP(int& x, int& y) //C에서는 포인터로 가져오는 방식이었으나 CPP에서 레퍼런즈 참조 가능해짐
{
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:
댓글 쓰기