자료형
포인터 타입
|
- 포인터 사용시 주의점
- 포인터의 타입과 변수의 타입이 일치해야 한다.
- 초기화가 안된 포인터를 사용하면 안된다.
- 포인터가 아무것도 가리키고 있지 않는 경우에는 NULL로 초기화
const 포인터
- 상수를 가리키는 포인터
- ex) const int *p1
- p1은 const int에 대한 포인터
- p1이 가리키는 내용이 상수
- p1(주소)은 바꿀 수 있지만 p1이 가리키는 내용은 못 바꿈.
- ex) *p1 = 100; (X)
- ex) const int *p1
- 정수를 가리키는 상수 포인터
- ex) int * const p2;
- 정수를 가리키는 p2가 상수
- p2(주소)는 못 바꾸지만 p2가 가리키는 내용은 바꿀 수 있음.
- ex) p2 = p1; (X)
- const int p1 == int const p2
- 포인터가 붙으면 달라짐.
- 통상적으로 const를 먼저 씀.
- ex) int * const p2;
포인터와 배열
- 매개변수에 배열로 준 경우, 연속된 어떤 공간의 시작 주소 전달
- 매개변수에 포인터로 준 경우, 단지 주소를 준 것
문자열 포인터
- ex) char carr[20] = “characters”, *cp = carr;
- 문자열 출력
- cp 출력 시, 문자열 출력
- 문자열을 표현하는 별도의 타입을 정하지 않아 cp가 문자열이라고 표시
- 주소 출력
- (void *)cp 출력 시, 주소 출력
- void 포인터는 가리키고 있는 곳의 타입을 알 수 없어서 크기 산정 X
- 주소는 있으며 1byte 씩 연산
- 문자열 출력
형변환(type cast)
사용자가 데이터의 타입을 변경하는 것
자동적인 형변환
- 서로 다른 자료형이 홉합하여 사용되는 경우, 더 큰 자료형으로 통일
- 대입(치환) 연산시 형변환
- 올림 변환 upcasting
- ex)
double f;
f = 1 + 2;
- ex)
- 내림 변환 downcasting
- ex)
int i;
i = 3.141592;
- ex)
- 올림 변환 upcasting
- 수식 연산시 형변환
명시적인 형변환
- 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 |