알고리즘/[EXP] 삼성 SW 역량 테스트 C형
char 타입 배열을 다른 타입의 메모리로 사용하기
피로물든딸기
2023. 8. 26. 20:59
반응형
정수 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;
}
반응형