C언어 : 포인터 예제2(void 포인터)

지환·2022년 1월 9일
0

C언어

목록 보기
19/37
post-thumbnail

<int형 변수에 저장된 값을 1바이트 단위로 출력하자>

int main()
{
	int D_data = 0x12345678, i;
	char* p = (char*)D_data;
	for (i = 0; i < 4; i++)
	{
		printf("%X", *p);
		p++;
	}

}
  • D_data는 int형 변수를 갖는다. 4바이트 -> 포인터가 가르키는 대상은 1바이트 char형 -> 형 변환으로 1바이트 char형 선언 int형에서 4바이트 중에서 1바이트만 사용한다.

<결과>

void형 포인터에 대해 알아보자.

  • 형 변환 문법을 주로 사용하여 처리한다.
int data = 0;
void *p = &data;
*(int *) p = 7; //data 변수에 7이 들어간다.

다음 예제를 보자.

#include <stdio.h>


int JetData(void* p_data, char type)
{
	int result = 0;
	if (type == 1) result = *(char*)p_data;
	else if (type == 2) result = *(short*)p_data;
	else if (type == 4) result = *(int*)p_data;
	return result;

}


void main()
{
	int data = 0x12345678;
	printf("%X\n", JetData(&data, 2));

}
  • void형 연산자는 이렇게 casting(형 변환)을 계속 해야 된다.
  • if (type == 1) result = (char)p_data; 값은 :0x78 1바이트가 저장된다.
  • else if (type == 2) result = (short)p_data; : 0x5678(2바이트가 저장된다.)
profile
아는만큼보인다.

0개의 댓글