본문 바로가기
알고리즘/[EXP] 삼성 SW 역량 테스트 C형

char 타입 배열을 다른 타입의 메모리로 사용하기

by 피로물든딸기 2023. 8. 26.
반응형

삼성 C형 전체 링크

 

정수 500 ~ 1000을 char 타입 memory[1000]에 넣어보자.

#include <stdio.h>

char memory[1000];

void memoryWrite(char memory[])
{
	for (int i = 500; i < 1000; i++) memory[i - 500] = i;
}

void memoryRead(char memory[])
{
	for (int i = 0; i < 500; i++) printf("%d\n", memory[i]);
}

int main()
{
	memoryWrite(memory);
	memoryRead(memory);

	return 0;
}

 

당연히 char 타입은 unsigned인 경우에도 255까지만 넣을 수 있기 때문에 위의 결과가 나오게 된다.

 

하지만 메모리만 넉넉하다면 안 될 이유는 없다.

char 배열은 1000이고, 값은 500개이므로, 같은 크기의 short 배열에 넣으면 되기 때문이다.

 

따라서, char memory[]를 short타입 캐스팅 한 후, 값을 넣고, 읽을 때도 short 타입으로 출력하면 된다.

#include <stdio.h>

char memory[1000];

void memoryWrite(char memory[])
{
	short* ptr = (short*)memory;
	for (int i = 500; i < 1000; i++) ptr[i - 500] = (short)i;
}

void memoryRead(char memory[])
{
	short* ptr = (short*)memory;
	for (int i = 0; i < 500; i++) printf("%d\n", ptr[i]);
}

int main()
{
	memoryWrite(memory);
	memoryRead(memory);

	return 0;
}

반응형

댓글