공용체
서로 다른 데이터 형을 한번에 한가지만 보관할 수 있다.
마지막에 저장된게 float 형이기 때문에 결국에 test 공용체의 데이터타입은 float이고
intVal와 longVal는 float이 아니기때문에 쓰레기값이 출력되게 된다.
열거체
기호 상수를 만드는 것에 대한 또다른 방법
열거자들을 기호 상수로서 관리한다. 예시를 보면 red부터 ultraviolet을 0에서부터 7까지 정수값을 각각 나타내는 기호 사웃로 만든다. 한마디로 인덱스 값을 붙여준다고 생각하면 된다.
orange는 1번째 수이기 때문에 1이 출력된다.
blue는 4번째 수이니까 4가 출력되는데 이 b에 3을 더하면 7이 출력된다.
변수를 하나 생성해서 거기에 열거체의 상수를 대입한 후 연산은 가능하지만
spectrum b = blue+3 과 같은 연산은 허용되지 않는다.
다만 int b=blue+3과 같은 연산은 허용된다.
포인터 연산자 -> new
보통은 전자와 같은 형태로 포인터를 선언하는데
pointer는 어떻게 포인터의 역할을 하고 있을까? 이는 포인터가 데이터의 객체를 지시하고 있기 때문이다.
new연산자는 어떤 데이터형을 원하는지 new 연산자에게 알려주면 new 연산자는 그에 알맞은 크기의 메모리 블록을 찾아내고 그 블록의 주소를 리턴한다.
포인터 연산자 -> delete
사용한 메모리를 다시 메모리 풀로 환수
환수된 메모리는 프로그램의 다른 부분이 다시 사용
1. new로 대입하지않은 메모리는 delete로 해제할 수 없다.
2.같은 메모리 블록을 연달아 두번 delete로 해제할 수 없다.
3.new[]로 메모리 대입할 경우 delete[]로 해제한다.
4. 대괄호 사용하지 않았다면 delete도 대괄호를 쓰면 안된다.
동적할당 해주기!
new를 통해서 동적할당이 가능한데 예를 들어서 char형 배열의 크기를 입력받아서 동적으로 배열의 크기를 정하고,
그 안에 동물의 이름도 입력받아서 넣는 프로그램을 작성한다고 해보자.
size를 입력받고 거기에 맞게 animal 배열을 생성해준다음에 animal이름도 입력받아준다.
동적구조체
동적구조체는 멤버 연산을 화살표로 해줘야 한다.
new를 통해 동적구조체를 생성해주고 멤버는 -> (화살표 연산) 또는 *temp .을 통해 접근 할 수 있다.
'C++ > 기초(두들낙서)' 카테고리의 다른 글
[C++] 함수와 구조체 / 함수 포인터 / 참조변수 (0) | 2022.07.05 |
---|---|
[C++] 멤버 메서드 활용하기 (0) | 2022.07.02 |
[C++] 정적 멤버 (static) (0) | 2022.07.01 |
[C++] 객체의 생성과 소멸 (0) | 2022.07.01 |
[C++] auto/ 공백포함해서 입력받는 방법 / string / 구조체 (0) | 2022.06.25 |
댓글