[C++] Chapter2(시작,bool,Reference)

서희찬·2021년 4월 30일
0
post-thumbnail

Chapter02 시작에 앞서

시작에 앞서서 C언어의 문제 세개를 보고가자.

문제 1

키워드Const의 의미

상수화 !

문제 2

실행중인 프로그램의 메모리 공간
데이터, 스택, 힙영역을 설명해보자.

  • 데이터 : 전역변수가 저장 되는 영역
  • 스택 : 지역변수 및 매개변수 저장 영역
  • 힙 : 프로그램 실행 과정에서 동적 할당 이뤄지는 영역

문제 3

Call by value vs Call by reference

Call by value : 값에 의한 호출

  • 장점 : 원래 값을 보존하고 복사해서 사용해서 안전하다.
  • 단점: 복사해서 메모리 사용량이 늘어난다.

Call by reference : 참조에 의한 호출

  • 장점 : 참조해서 시간이 단축된다.
  • 단점 : 원래값에 접근 하는 것이므로 리스크가 있다.

새로운 자료형 bool

참을 의미하는 true , 거짓을 의미하는 false

c와 c++모두 0은 거짓을 의미하고 그 외의 정수는 모두 "참"을 의미한다.

그래서 다음과 같이 정의 하는 것이 일반적이다.

#define TRUE 1
#define FALSE 0

그런데 c++ 에서는 참과 거짓의 표현을 위한 키워드 true,false를 정의하고 있어서 굳이 매크로를 사용하지 않아도 된다.

이를 출력하면

이렇게 된다.

이를보고 트루는 1 이고 false는 0이라고 생각하면
안된다.

이 둘은 각자 1 바이트 크기를 가진 "참"과 "거짓"을 표현하기 위한 데이터일뿐이다!!!

다만!
정수가 와야 할 위치에 true/false가 오는 경우 1과 0이 반환되도록 되있을 뿐이다.

자료형 bool

bool 또한 자료형이므로 int 와 마찬가지로

bool isTrueOne = true;
bool isTrueTwo = false;

이와 같이 선언하는게 가능하다.

그럼 다음 예제를 통해 어떤 방식으로 쓰이는지 확인해보자.

#include <iostream>
using namespace std;

bool IsPositive(int num)
{
    if(num<0)
        return false;
    else
        return true;
}

int main(void)
{
    bool isPos;
    int num;
    cout<<"Input Number : ";
    cin>>num;
    
    isPos = IsPositive(num);
    if (isPos) {
        cout<<"Positive Number"<<endl;
    }
    else{
        cout<<"Negative Number"<<endl;
    }
    
    
    return 0;
}

이를 통해서 bool 도 기본자료형 중 하나인것을 더 명확히 배울 수 있다!

참조자의 이해

참조자라는것은 성격상 포인터와 비유되기 싶다!!
그러나!
참조자는 포인터를 모르는 사람도 이해할 수 있으니 괜히 포인터를 끌고오지말자.

참조자의 이해

변수란 무엇인가?

"변수는 할당된 메모리 공간에 붙여진 이름이고 이를 통해서 해당 메모리 공간에 접근이 가능하다."

그렇다면 이와 같이 생각해본적이 있는가?

"할당된 하나의 메모리 공간에 둘 이상의 이름을 부여할 수 있을까?"

이와같이 새로 선언되는 변수의 이름 앞에 &연산자가 오면 이는 참조자라는것이다!
즉num1,num2가 같은 곳을 가리킨다!!!

변수와 참조자의 차이는
선언의 방법에서 확실한 차이가 보인다

참조자는 변수를 대상으로만 선언이 가능하기 때문이다.

하지만!! 일단 선언되고 나면 차이가 없다!!
심지어 주소값까지 !!

참조자는 별칭입니다.

c++에서 전통적으로 참조자를 다음과 같이 설명한다.

"변수에 별명을 하나 붙여주는 것입니다."

참조자의 수에는 제한이 없으며, 참조자를 대상으로도 참조자를 선언할 수 있다.


이르케 많이 할 수 있다.

참조자의 선언 가능 범위

참조자는 변수에 대해서만 선언이 가능하고, 선언됨과 동시에 누군가를 참조해야만한다.

이와 같이참조자는 무.조.건 선언과 동시에 변수를 참조하도록 해야한다.

다음과 같이 포인터나 배열의 요소에 대해서도 참조자를 선언할 수 있다.

profile
Carnegie Mellon University Robotics Institute | Research Associate | Developing For Our Lives, 세상에 기여하는 삶을 살고자 개발하고 있습니다

0개의 댓글