bool 타입, Reference

1. C 에서 없던 bool 데이터 형이 생겨났다.

if(IsStudent() == true)
{

}

if(IsStudent() == false)
{

}

2. 참조(Reference) 는 매우 중요한 개념이다!

참조

  • 포인터를 사용하는 좀 더 안전한 방법

  • 하지만 Java 처럼 제한적이지는 않음

2-1. Call by Value vs Call by Reference

  • 값에 의한 호출(call by value)

  • 참조에 의한 호출(call by reference)

    • c / c++ -> c / c++ 는 포인터를 제공하지 않으면 call by value 처럼 동작하게 된다.

    • Java -> Java 는 primitive 타입이 아닌 것(reference 타입)에 대해서는 값의 주소를 제공하기 때문에, c / c++ 과 헷갈리는 부분이다. -> 해당 주소는 포인터 연산자가 아니다! 왜냐면 포인터 연산자처럼 주소를 바꿀 수 없다.. -> 자바는 성능보다는 안전함을 위한 언어이기 때문에, 포인터를 의도적으로 사용하지 않는다.

  • 포인터(pointer)

    • c / c++ 에서 포인터 1을 더하는 연산을 할 때, 타입의 사이즈 만큼 증가하게 된다.

2-2. C++ 의 참조(reference)는 위와 같이 복잡한 방법에 대한 해결책이다.

참조는 별칭이다!

-> int& reference = number int* pointer = &number 는 완전 다른 의미이기 때문에, 주의하자!

함수 매개변수로서의 참조

  • number1, number2 변수는 NULL 이 될 수 없다. (안전한 코드!)

3. 컴퓨터는 참조가 뭔지 알까?

  • 모른다..

  • 컴파일러에 의해 참조는 포인터로 변경이 된다.

  • 참조는 오직 인간을 위한 것임

  • 컴파일러는 참조를 포인터로 바꾸어 준다. 기계가 이해할 수 있도록 -> 컴퓨터는 참조는 모르지만 포인터는 안다!

Last updated