[C++] Types

2024. 4. 29. 18:42·C++
목차
  1. 자료형
  2. 포인터 타입
  3. 형변환(type cast)

자료형

포인터 타입

  • 포인터 타입의 변수: 메모리의 주소 값을 가지고 있는 변수
  • 간접 참조 연산자 *: 포인터가 가리키는 값을 가져오는 연산자
    • 지정된 위치에서 포인터의 타입에 따라 값을 읽어들인다.
  • 포인터 사용시 주의점
    • 포인터의 타입과 변수의 타입이 일치해야 한다.
    • 초기화가 안된 포인터를 사용하면 안된다.
    • 포인터가 아무것도 가리키고 있지 않는 경우에는 NULL로 초기화

const 포인터

  • 상수를 가리키는 포인터
    • ex) const int *p1
      • p1은 const int에 대한 포인터
      • p1이 가리키는 내용이 상수
      • p1(주소)은 바꿀 수 있지만 p1이 가리키는 내용은 못 바꿈.
        • ex) *p1 = 100; (X)
  • 정수를 가리키는 상수 포인터
    • ex) int * const p2;
      • 정수를 가리키는 p2가 상수
      • p2(주소)는 못 바꾸지만 p2가 가리키는 내용은 바꿀 수 있음.
        • ex) p2 = p1; (X)
    • const int p1 == int const p2
      • 포인터가 붙으면 달라짐.
      • 통상적으로 const를 먼저 씀.

포인터와 배열

  • 매개변수에 배열로 준 경우, 연속된 어떤 공간의 시작 주소 전달
  • 매개변수에 포인터로 준 경우, 단지 주소를 준 것

문자열 포인터

  • ex) char carr[20] = “characters”, *cp = carr;
    • 문자열 출력
      • cp 출력 시, 문자열 출력
      • 문자열을 표현하는 별도의 타입을 정하지 않아 cp가 문자열이라고 표시
    • 주소 출력
      • (void *)cp 출력 시, 주소 출력
      • void 포인터는 가리키고 있는 곳의 타입을 알 수 없어서 크기 산정 X
        • 주소는 있으며 1byte 씩 연산

 

형변환(type cast)

사용자가 데이터의 타입을 변경하는 것

자동적인 형변환

  • 서로 다른 자료형이 홉합하여 사용되는 경우, 더 큰 자료형으로 통일
  1. 대입(치환) 연산시 형변환
    • 올림 변환 upcasting
      • ex)
        double f;
        f = 1 + 2;
    • 내림 변환 downcasting
      • ex)
        int i;
        i = 3.141592;
  2. 수식 연산시 형변환

명시적인 형변환

  • ex)
int i, j; float y, f;
f = (double)(i+j)
f = (double)i + (double)j

 

  • 포인터 타입의 형변환
    • 값은 안바뀌고 주소가 가리키는 곳의 타입이 바뀜.cout << (void *)c_p << endl;
    • ex)
i_p = (int *)f_p
cout << (void *)c_p << endl; 
// void는 주소가 가리키는 곳의 타입을 모른다는 의미, 바이트 단위로 읽음
728x90
반응형

'C++' 카테고리의 다른 글

[C++] Make Utility  (0) 2024.04.30
[C++] Function  (0) 2024.04.29
[C++] Control Structures  (0) 2024.04.29
[C++] Array  (0) 2024.04.29
[C++] Variable  (0) 2024.04.29
  1. 자료형
  2. 포인터 타입
  3. 형변환(type cast)
'C++' 카테고리의 다른 글
  • [C++] Make Utility
  • [C++] Function
  • [C++] Control Structures
  • [C++] Array
nueos
nueos
  • nueos
    nueos 공부 기록
    nueos
  • 전체
    오늘
    어제
    • 분류 전체보기 (191)
      • 해커톤 (1)
      • 네이버 BoostCamp (6)
      • LG 유플러스 유레카 SW (3)
        • React (21)
        • TypeScript (2)
        • JavaScript (2)
        • HTML+CSS (5)
        • Spring (7)
        • Java (6)
        • SQL (2)
        • Algorithm (8)
        • CX (6)
        • Git (2)
        • 프로젝트 (2)
        • 스터디 (9)
        • 과제 (8)
        • 특강 (1)
      • React (3)
      • Next (0)
      • Javascript (2)
      • HTML (2)
      • CSS (9)
      • Algorithm (6)
      • Database (0)
      • OS (13)
      • C++ (24)
      • Python (1)
      • jQuery (1)
      • Django (1)
      • Git (1)
      • 개발 지식 (3)
      • 정보 보안 (22)
      • 포렌식 (1)
      • 암호 (2)
      • 기타 (4)
      • 패스트캠퍼스 FE 프로젝트십 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    디지랩챌린지
    제주해커톤
    디지털혁신
    힙
    heap
    스택
    제주지역혁신플랫폼지능형서비스사업단
    exhaustive search
    Stack
    완전 탐색
    Queue
    큐
    기술로바꾸는세상
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
[C++] Types
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.