(C++)4-4장 형변환

3.1 배열의 포인터 변환
배열을 포인터로 변환해 주소 이동만 가지고 효율적으로 배열의 값들으 읽거나 수정 할 수 있다.

예제)
#include<iostream>
using namespace std;
int main()
{
 int i; int arr[10];
 for(i=0;i<10;i++)
 {
  arr[i]=i*2;
  }
  int *ptr=arr;
  cout<<arr[i]<<endl;
  cout<<*(ptr+1)<<endl;
}

3.2 명시적 형변환
--- cast문법을 사용해 명시적으로 자료형을 변환할 수 있다.
cast-name<type>(expression)

. type: 변환될 형
. expression: 변환될 값
. cast-name: static_cast, const_cast, dynamic_cast, reinterpret_cast

3-2-1
static_cast형 변환
--흔히 산술 연산으로 인해 자동으로 형변환 되는 경우를 방지하기 위해 명시적으로 자료를 강제하는 경우와 void포인터와 함께 쓰여 특정자료형으로 변환이 필요할 때 많이 쓰인다.

int main()
{
 float i=100.12345; double j=200.12345;
 float count=static_cast<float>(j/i);
}

int main()
{
 double d=1212;
 void* p=&d;
 double* dp=static_cast<double*><p>;
//void 포인터 변수 p에대해 컴파일러가 자료형을 모르기 때문에 static_cast를 이용해
명시적으로 double형을 변환해주엇다.
}

3-2-2
const_cast형 변환

int main()
{
 const char* cp;
 char* q=const_cast<char*>(cp); //한정자를 일반문자열 변수q로 변경했다
 const_cast<string>(cp);//컴파일 오류  char*형을 string형으로 한정 속성 뿐만 아니라 자료형자체를 변환하려고 했으므로 오류가난다.
}

댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기