1. 타입 캐스팅(Type Casting)
타입 캐스팅은 변수나 상수의 데이터 타입을 다른 타입으로 변환하는 과정을 의미한다. C에서는 자동(암시적) 타입 변환과 명시적 타입 변환 두 가지 방식으로 타입 캐스팅을 수행할 수 있다.
자동 타입 변환
자동 타입 변환은 컴파일러가 소스 코드의 컨텍스트를 기반으로 자동으로 수행하는 타입 변환이다.
예를 들어, int 타입의 변수에 float 타입의 값을 할당할 때, float 값이 int로 자동 변환된다.
int num;
float pi = 3.14;
num = pi; // float에서 int로 자동 타입 변환. num은 3이 됨
명시적 타입 변환
명시적 타입 변환(또는 캐스팅)은 개발자가 직접 타입을 지정하여 수행하는 타입 변환이다.
이는 괄호 안에 원하는 타입을 명시하여 수행하며, 특정 타입의 처리가 필요한 연산에서 주로 사용된다.
int total = 7;
int count = 2;
double average;
average = (double)total / count; // int를 double로 명시적 변환하여 실수 나눗셈 수행
2.역참조(Dereferencing)
메모리 주소가 있는 곳으로 이동해서 값을 가져오고 싶을 때 역참조 연산자 *를 사용한다.
포인터는 메모리 주소값을(ex. 0x00FF) 저장하는 변수이다. 포인터가 가리키는 위치의 실제 데이터 값에 접근하려면 역참조 연산자(*)를 사용해야 한다. 이 과정을 역참조라고 한다.
즉, 포인터는 변수의 주소만 가리키고 역참조는 주소에 접근해서 변수 주소안에 저장된 값을 가져온다.
*의 사용은 두 가지이며 이 둘을 구분할 줄 알아야한다.
1. 포인터 선언 : " 이 변수는 메모리 주소값을 가리키는 포인터야"라고 알려주는 역할
2. 역참조 : "포인터의 메모리 주소를 역참조해서 값을 가져오겠다" 는 의미를 가진다
포인터 선언과 초기화
포인터를 선언하고 변수의 주소를 할당하는 예시
int value = 10;
int *ptr = &value; // ptr은 value의 주소를 가리킵니다.
역참조를 통한 값 접근
포인터를 역참조하여 가리키는 데이터 값( (변수의 주소값이 아닌!) )을 읽거나 수정할 수 있다.
int data = *ptr; // 역참조를 사용해 ptr이 가리키는 변수의 값을 data에 할당
*ptr = 20; // 역참조를 사용해 ptr이 가리키는 변수의 값을 20으로 변경
'C 언어' 카테고리의 다른 글
2차원 배열 동적 할당 시 해제 (0) | 2024.04.28 |
---|---|
공백 문자열과 빈 공간 문자열의 차이 (1) | 2024.04.22 |
문자를 숫자로 변환하기 (0) | 2024.04.20 |
토큰(token): 문자열이나 코드를 구성하는 작은 단위 (0) | 2024.04.14 |
2차원 배열 메모리 할당과 포인터 (0) | 2024.04.10 |